XPath Expression在HtmlAgilityPack中不起作用

c# html-agility-pack xpath

我知道這可能是我在XPath中的無聊,但是讓我確認一下,因為我已經足夠google了。

我有一個網站,想從中得到新聞標題:www.farsnews.com(波斯語)

在firefox下手動使用FireBug和FireXpath擴展,我手工提取並測試與標題匹配的多個Xpath表達式,例如:

* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]

我也使用XPather擴展測試了這些,它們似乎工作得很好,但是當我測試它們時... SelectNodes返回null!

任何線索或提示?

這是代碼的一大塊:

* html/body/div[2]/div[2]/div[2]/div[*]/div[2]/a/div[2]
* .//*[@class="topnewsinfotitle "]
* .//div[@class="topnewsinfotitle "]

謝謝。

熱門答案

我測試了你的表情。正如Dialecticus在評論中提到的那樣,你有一個不應該存在的結局空間。

//div[@class='topnewsinfotitle ']/text()

返回'空序列',請參閱評估: http//xmltools.dk/EQA-ACA6

//div[@class='topnewsinfotitle ']/text()

返回標題列表,請參閱: http//xmltools.dk/EgA2APAj

但是,如果可以使用其他類( http://xmltools.dk/EwA8AJAW ):

//div[@class='topnewsinfotitle ']/text()

(我看到它們是我提供的鏈接中的編碼問題,但是,對於含義並不重要,對於所有XPath表達式,您可以刪除/text()來獲取節點而不僅僅是文本)

但是,如果你擁有這個網站,你應該提供一個XML(可能是RSS或ATOM)或JSON的頭條新聞,它們將具有更好的性能,最重要的是,更具防彈性。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因