使用c#在html文档中动态抓取JavaScript生成的数据
Scraping data dynamically generated by JavaScript in html document using C#
如何使用c#在html文档中抓取JavaScript动态生成的数据?
在c#库中使用WebRequest
和HttpWebResponse
,我能够将整个html源代码作为字符串,但困难的是我想要的数据不包含在源代码中;数据是由JavaScript动态生成的。
另一方面,如果我想要的数据已经在源代码中,那么我可以使用正则表达式轻松地获得它们。
我已经下载了HtmlAgilityPack
,但我不知道它是否会照顾的情况下,项目是由JavaScript动态生成的…
非常感谢!
当你做WebRequest时,你要求服务器给你页面文件,这个文件的内容还没有被web浏览器解析/执行,所以上面的javascript还没有做任何事情。
如果您想看到被浏览器解析后的页面是什么样子,则需要使用工具在页面上执行JavaScript。你有一个选择是使用内置的。net浏览器控件:http://msdn.microsoft.com/en-au/library/aa752040(v=vs.85).aspx
web浏览器控件可以导航到并加载页面,然后您可以查询它的DOM,这将被页面上的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
}
}
您可以使用Selenium之类的工具来抓取包含Javascript的页面。
http://www.andykelk.net/tech/headless-browser-testing-with-phantomjs-selenium-webdriver-c-nunit-and-mono相关文章:
- JavaScript数据结构
- 父级对子 JavaScript 数据的访问
- 更改动态 JavaScript 数据
- Javascript 数据可用事件
- 将javascript数据放入表单中
- 将json结构转换为可用的javascript数据集
- 从HTML表单中获取计算得到的JavaScript数据,并将其作为新元素添加到相同的表单操作中以使用PHP保存
- 数值的 JavaScript 数据类型
- 使用 ajax 将 JavaScript 数据传输到 PHP
- Javascript数据将元素属性绑定到URL中的锚href
- 整页回发和javascript数据
- 如何使用javascript数据对象?如何通过变量访问条目
- 如何将从数据库中提取的数字传递到javascript数据部分
- Spring MVC与Google图表,创建javascript数据表的最佳方式是什么
- JavaScript 数据中的 XSS
- 无法将我的 JavaScript 数据填充为 HTML
- 如何将相同的 JavaScript 数据传递给 HTML 两种不同的方式
- JavaScript 数据结构,JS中的ArrayList(Java)
- 将 casper javascript 数据插入 CSV 文件
- 用于高效插入和搜索的 Javascript 数据结构