【问题标题】:HTML Agility Pack 2HTML 敏捷包 2
【发布时间】:2012-11-21 18:49:07
【问题描述】:

我打算废弃 This Website 。 下面的 Xpath 表达式与 FirePath firebug 扩展一起正常工作

html/body/table/tbody/tr[3]/td

但是使用相同的 xpath 表达式,下面的代码给了我 null :

 HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
 HtmlWeb web = new HtmlWeb();

 doc = web.Load("http://www.edb.gov.hk/templates/sch_list_print.asp?district=cw");
 var collection= doc.DocumentNode.SelectNodes("html/body/table/tbody/tr[3]/td");

谁能帮我解决这个问题。谢谢。

【问题讨论】:

    标签: c# .net xpath html-agility-pack


    【解决方案1】:

    这行得通,查看您尝试抓取的页面的来源,表格内没有 tbody。

    HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
    HtmlWeb web = new HtmlWeb();
    
    doc = web.Load("http://www.edb.gov.hk/templates/sch_list_print.asp?district=cw");
    var collection= doc.DocumentNode.SelectNodes("html/body/table/tr[3]/td");
    

    将您的 xpath 更改为

    html/body/table/tr[3]/td
    

    【讨论】:

    • 哦,太好了,我使用的xpath是由firepath生成的,确实html中没有tbody,知道吗??
    • 在加载 DOM 并且有表缺少 tbody 时自动“修复”。加载页面之后和加载页面时,DOM 可能会发生很多事情,您总是需要查看原始源以查看实际存在的内容。如果它解决了您的问题,请记住将答案标记为正确答案:)
    • 还有其他有用的指针来使用敏捷包报废作业吗?
    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 2016-06-01
    • 2017-06-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-18
    相关资源
    最近更新 更多