在c中从网页检索ajax/JavaScript返回结果#
我正在尝试用c#检索网页的内容。问题是网页使用Ajax和JavaScript动态创建和填充HTML元素 我说的网页是: 如果使用在c中从网页检索ajax/JavaScript返回结果#,javascript,c#,html,ajax,Javascript,C#,Html,Ajax,我正在尝试用c#检索网页的内容。问题是网页使用Ajax和JavaScript动态创建和填充HTML元素 我说的网页是: 如果使用httpWebRequest获取网站的HTML代码,则只有JavaScript调用可见,而内容不可见。那么,如何才能在控制台c#程序中获得显示在网页上的JavaScript的返回结果呢?我尝试过使用web浏览器类,但无法使其正常工作 如何在新线程中使用web browser类在数组列表中显示动态创建的表的结果?此外,如果您不知道名称,如何访问相关的HTML标记?你能用身
httpWebRequest
获取网站的HTML代码,则只有JavaScript调用可见,而内容不可见。那么,如何才能在控制台c#程序中获得显示在网页上的JavaScript的返回结果呢?我尝试过使用web浏览器类,但无法使其正常工作
如何在新线程中使用web browser类在数组列表中显示动态创建的表的结果?此外,如果您不知道名称,如何访问相关的HTML标记?你能用身份证标签吗?这是假设web浏览器类是实现这一点的最佳方式。还是有更好的办法
相关的HTML代码部分是:
<div class="ajax_table" id="53c2583b1f204464d7fa9387e2ac1868"><script>blackmamba_pager('Textmining', 'type1=9606id1=ENSP00000317985type2=-26title=Text+mining',
10, 1, '53c2583b1f204464d7fa9387e2ac1868');</script></div>
blackmamba_寻呼机('Textmining','type1=9606id1=ensp0000317985type2=-26title=Text+mining',
10,1,'53c2583b1f204464d7fa9387e2ac1868');
请给我举一个例子说明如何做到这一点。然后,也取自堆栈溢出:):
没有像jQuery那样通过类名直接获取元素的方法。如果表div的id不稳定,可以使用GetElementsByTagName,遍历结果。然后,您可以使用GetAttribute(“classname”)来匹配您的“ajax\u table”类。我已经看过tI的可能副本,我已经看过其他问题的答案,但不明白如何将该示例用于我的场景。我添加了更多信息来澄清问题。我尝试将其更改为在控制台程序上工作。但是,我得到了一个空指针异常,用户代码在下面一行未处理。下面是我的代码:private void runBrowserThread(Uri url){var th=new Thread(()=>{var mywebBrowser=new WebBrowser();mywebBrowser.DocumentCompleted+=new WebBrowserDocumentCompletedEventHandler(mywebBrowser\u DocumentCompleted);mywebBrowser.Navigate(url);Application.Run();});th.SetApartmentState(ApartmentState.STA);th.Start();}私有无效mywebBrowser_文档已完成(对象发送方,WebBrowserDocumentCompletedEventArgs e){//直到此时,页面还没有完全加载HtmlDocument doc=mywebBrowser.Document;//此处错误HtmlElement tagCollection;tagCollection=doc.GetElementById(“53c2583b1f204464d7fa9387e2ac1868”);}为什么我会出现这种异常?你会进一步得到带有tagCollection.InnerTeks的表的内容吗?在我看来,当你在线程中创建webbrowser控件时,它对文档完整回调不可见。它希望控件对它可用。好的,但是为什么myWebBrowser的HtmlDocument为空?这是否意味着找不到我正在使用的d或该页未加载。我的代码中是否有任何内容必须更改才能修复此问题?
WebBrowser mywebBrowser;
private void Form1_Load(object sender, EventArgs e)
{
mywebBrowser = new WebBrowser();
mywebBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(mywebBrowser_DocumentCompleted);
Uri address = new Uri("http://www.cnn.com/");
mywebBrowser.Navigate(address);
}
private void mywebBrowser_DocumentCompleted(Object sender,WebBrowserDocumentCompletedEventArgs e)
{
//Until this moment the page is not completely loaded
HtmlDocument doc = mywebBrowser.Document;
HtmlElementCollection tagCollection;
tagCollection = doc.GetElement("53c2583b1f204464d7fa9387e2ac1868");
}