don*_*nic 7 xpath html-agility-pack
这是我第一次尝试使用HAP获取元素值.当我尝试使用InnerText时,我收到一个null对象错误.
我正在抓取的网址是: - http://www.mypivots.com/dailynotes/symbol/659/-1/e-mini-sp500-june-2013 我正试图从日间变化中获取当前高点的值汇总表.
我的代码位于底部.首先,我想知道我是否正确地采取了这种方式?如果是这样,那么我的XPath值是不正确的呢?
XPath值是使用我发现的名为htmlagility helper的实用程序获得的.下面的XPath的firebug版本也给出了同样的错误: - /html/body/div [3]/div/table/tbody/tr [3]/td/table/tbody/tr [5]/td [3 ]
我的代码: -
WebClient myPivotsWC = new WebClient();
string nodeValue;
string htmlCode = myPivotsWC.DownloadString("http://www.mypivots.com/dailynotes/symbol/659/-1/e-mini-sp500-june-2013");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(htmlCode);
HtmlNode node = doc.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[3]/div[1]/table[1]/tbody[1]/tr[3]/td[1]/table[1]/tbody[1]/tr[5]/td[3]");
nodeValue=(node.InnerText);
Run Code Online (Sandbox Code Playgroud)
谢谢,威尔.
Sim*_*ier 27
您不能依赖开发工具(如FireBug或Chrome等)来确定您所关注节点的XPATH,因为这些工具提供的XPATH对应于内存HTML DOM而Html Agility Pack只知道服务器发回的原始HTML.
您需要做的是直观地查看发回的内容(或只是查看源代码).你会看到没有TBODY元素.因此,您希望找到任何区别对象,例如使用XPATH轴.此外,您的XPATH即使有效,也不会对文档中的更改产生很大的抵抗力,因此您需要找到更加"稳定"的内容,以便更好地面向未来.
这是一个似乎有用的代码:
HtmlNode node = doc.DocumentNode.SelectSingleNode("//td[@class='dnTableCell']//a[text()='High']/../../td[3]");
Run Code Online (Sandbox Code Playgroud)
这就是它的作用:
归档时间: |
|
查看次数: |
29409 次 |
最近记录: |