C# webbrowser怎么获取JS加载的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# webbrowser怎么获取JS加载的数据?相关的知识,希望对你有一定的参考价值。

http://news.ecnu.edu.cn/department/column.shtml
我想用程序获得上面网页中每条新闻的链接,利用c#只能抓到源代码,但是源代码里面没有链接,审视元素却可以看得到,这些数据应该是用js加载上去的,所以我想问一下用js加载的数据要怎么获得,谢谢大大

    打开电脑。

    打开VS。

    打开你的工程项目。

    在代码里添加一个SendDataToWin(string json)方法:js自己获取数据完成完就调用window.external.SendDataToWin(string json);把数据推给webbrowser,其中SendDataToWin(string json)是定义在窗体里的方法。

    按F5运行调试。

参考技术A 写个js函数,用来加载数据;
然后再页面上<SCRIPT language="javascript" runat="server" type="text/javascript"> 然js运行在服务器端;就可以调用js里的函数了本回答被提问者采纳

C# .NET WebBrowser.Document GetElementById获取不到指定ID

1、首先我是 WebBrowser 默认加载了一个页面比如百度
然后点击一个按钮:
var htmlDocument = webBrowser.Document;
if (htmlDocument == null) return null;
htmlDocument = htmlDocument.OpenNew(true);
htmlDocument.Write(html);
var newHtmlDocument = webBrowser.Document;
if (newHtmlDocument == null) return null;
最后用:
var speclist10 = newHtmlDocument.GetElementById("speclist10");
获取不到Id为 speclist10 的HtmlElement
我可以肯定 html 中包含 Id为speclist10的div

在webBrowser的DocumentCompleted事件中写。
获取不到的核心原因是页面还未加载完。违反了页面加载生命周期原理。
参考技术A JavaScript Document
function show(str)

var str1="td"+str;
var str="show"+str;
for (var i=1; i<18; i++)

var obj = document.getElementById('show' + i.toString());
if (obj) obj.style.display = 'none';

document.getElementById(str).style.display="block";
追问

不是js,是C#的WebBrowser

以上是关于C# webbrowser怎么获取JS加载的数据?的主要内容,如果未能解决你的问题,请参考以下文章

C# webbrowser怎么判断登录是不是成功?

c#抓取动态网页中的数据

C#webbrowser控件是不是能获取JS加载的数据

C#如何获取webBrowser的head标签

c#如何判断webbrowser已经加载完毕

webbrowser控件如何获取网页回传的数据