如何使用C#爬取包含JavaScript动态生成数据的HTML文档?
在C#库中使用WebRequest
和HttpWebResponse
,我能够将整个HTML源代码作为字符串获取,但困难在于我想要的数据并不包含在源代码中,而是由JavaScript动态生成。
另一方面,如果我想要的数据已经包含在源代码中,那么我可以轻松地使用正则表达式获取它们。
我已经下载了HtmlAgilityPack
,但我不知道它是否能处理由JavaScript动态生成的项目...
非常感谢!
如何使用C#爬取包含JavaScript动态生成数据的HTML文档?
在C#库中使用WebRequest
和HttpWebResponse
,我能够将整个HTML源代码作为字符串获取,但困难在于我想要的数据并不包含在源代码中,而是由JavaScript动态生成。
另一方面,如果我想要的数据已经包含在源代码中,那么我可以轻松地使用正则表达式获取它们。
我已经下载了HtmlAgilityPack
,但我不知道它是否能处理由JavaScript动态生成的项目...
非常感谢!
Uri uri = new Uri("http://www.somewebsite.com/somepage.htm");
webBrowserControl.AllowNavigation = true;
// optional but I use this because it stops javascript errors breaking your scraper
webBrowserControl.ScriptErrorsSuppressed = true;
// you want to start scraping after the document is finished loading so do it in the function you pass to this handler
webBrowserControl.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowserControl_DocumentCompleted);
webBrowserControl.Navigate(uri);
private void webBrowserControl_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
HtmlElementCollection divs = webBrowserControl.Document.GetElementsByTagName("div");
foreach (HtmlElement div in divs)
{
//do something
}
}