使用HTMLAgilityPack刮取数据

时间:2012-07-21 21:44:45

标签: c# html-parsing web-scraping html-agility-pack

在HTMLAgailityPack中,如何从网站获取未包含在innerhtml方法中的数据。例如,如果在以下链接中:

https://www.theice.com/productguide/ProductSpec.shtml?specId=1496#expiry

以合约符号开头的表格不在innerhtmltext中。请告诉我如何通过HTMLAgailityPack获取此表数据?

此致

3 个答案:

答案 0 :(得分:0)

您需要向https://www.theice.com/productguide/ProductSpec.shtml?expiryDates=&specId=1496&_=1342907196619

发送GET请求

通过javascript动态加载内容。也许您可以解析innerhtmltext以查看javascript将GET请求发送到

的链接

答案 1 :(得分:0)

如果它不是'来自innerhtml'那将意味着它被脚本放入那里。我自己无法查看此页面,所以我不确定。

如果它来自脚本,你就不能轻易搞定。您可以随意查看javascript,也可以在数据进入时阅读。

基本上在浏览器上安装Firebug,然后查看正在进行的数据传输。有时候你很幸运,有时你不是。

或者你可以采用简单的方法并使用winforms WebBrowser控件,将其加载到其中,让它运行脚本然后从那里刮掉。请注意,这会泄漏内存,GDI会像疯了一样处理。

答案 2 :(得分:0)

请使用此XPath来获取您想要的表//*[@id="right"]/div/table

e.g。

HtmlNode node = doc.DocumentNode.SelectSingleNode("//*[@id="right"]/div/table"));
string html = node.InnerHtml;