XPath式がHtmlAgilityPackで動作しない

c# html-agility-pack xpath

質問

私はそれがXPathの私のノービスのかもしれないことを知っているが、確かめるために私に頼んでみよう、十分に私はグーグルで探知した。

私はウェブサイトを持っており、そこからニュース見出しを取得したい:www.farsnews.com(それはペルシャ語です)

FireBugとFireXpathの拡張機能をfirefoxと手で使用すると、次のような見出しに一致する複数の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は合法ですか? はい、理由を学ぶ