使用HTML Agility Pack c#

时间:2015-08-21 20:10:25

标签: c# html html-agility-pack

我试图抓取一个网页(Pub Med),看看有多少参考文献出现在特定文章中(有些文章有参考文献,有些文章没有参考文献)。但是,我现在遇到的问题是div都是嵌套的并且命名相同,所以我还没有能够找出获取元素所需的代码。

到目前为止,我已尝试使用contains来查看是否可以抓住所有内容并从那里挖掘进入节点,但这并没有奏效。

.SelectNodes("//div[contains(@class,'portlet_title')]");

我也尝试过复制XPath,但我得到的只是结果为空

.SelectNodes("//*[@id="disc_col"]/div[3]/div[1]/div/h3/span");

任何帮助都会受到赞赏,因为我不是Xpath的主人 作为参考,符合我标准的页面是: http://www.ncbi.nlm.nih.gov/pubmed/?term=23489346(右手边引用*文章引用)。

我还浏览了其他一些回复,但它们似乎都是针对具有不同名称Div的结果(即get all the divs ids on a html page using Html Agility Pack)。要么我不明白如何正确使用它,要么我的问题不同。

再次感谢。

1 个答案:

答案 0 :(得分:1)

迈克!尝试使用

    var titles = website.DocumentNode.SelectNodes("//div[@class='portlet_title']");

XPath中的错误是:1。属性只写在" []"与" @"我写的象征; 2.在每个XPath节点中,你应该写一个索引,例如" // DIV [3] / DIV [1] / DIV的 [1] 的/ H3的 [1] 的/跨度的 [1] "

祝你好运!