2015-08-21 64 views
1

我試圖抓取一個網頁(Pub Med)來查看在特定文章中出現了多少引用(有些文章有引用,有些則沒有)。然而,我現在遇到的問題是divs都被嵌套並命名爲相同的東西,所以我一直無法弄清楚獲取元素需要什麼代碼。使用HTML敏捷包獲取嵌套的div c#

到目前爲止,我已經嘗試使用包含,看看我是否可以抓住一個捕獲所有,挖掘我的方式,從那裏的節點,但沒有奏效。

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

我也試圖複製的XPath但我在Xpath的沒有主人的一切我都得到的是空,結果

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

任何幫助,將不勝感激。
作爲參考,符合我的標準的頁面爲: http://www.ncbi.nlm.nih.gov/pubmed/?term=23489346(右側表示由*文章引用)。

我也瀏覽了一些其他的反應,但他們似乎都是用不同的命名Divs(即get all the divs ids on a html page using Html Agility Pack)的結果。要麼我不明白如何正確使用它,或者我的問題是不同的。

再次感謝。

回答

1

Mike!嘗試使用

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

您的XPath中的錯誤是:1.屬性用「@」符號寫在「[]」中,就像我寫的一樣; 2.在每個XPath節點中,你應該寫一個索引例如「// div [3]/div [1]/div [1]/h3 [1]/span [1]」。

祝你好運!

+0

謝謝丹尼斯的迴應,但使用上述仍然只會讓我在字符串中的「全文鏈接」,因爲這是第一個div。同樣的問題發生,因爲所有的div都被命名爲相同的。 – G3TH

+0

一旦仔細研究了這一點,我已經意識到我需要獲取的位置似乎以ajax形式進入頁面。它解釋了爲什麼我只能得到全文鏈接源代碼的一部分,因爲它下面的所有內容都與ajax有關。無論如何謝謝你的嘗試,生病必須找到一個新的方式來獲得這個數字。 – G3TH