2015-10-06 25 views
0

我試圖用xidel和最近遇到無效的HTML如何獲取無效html的xpath?

我使用Firefox獲得的XPath來提取HTML的XPath,但Firefox會自動添加缺少的標記 這樣的XPath doesent比賽

我可以停止火狐,或者你能建議一種解決這個問題的方法嗎?

也有一些反向xpath?獲取一些文本的xpath?

+5

根據定義,XPath僅在格式良好的XML環境中有效。如果XML格式不正確,那麼XPath可能不明確或無法解析。你的問題沒有答案。 –

回答

0

正如Jim Garrison已經提到的那樣:如果您的html無效,XPath將不起作用。要回答第二個問題:您可以使用瀏覽器擴展/插件輕鬆獲取某些文本的XPath。

對於Firefox,您可以使用例如XPath Checker。我在Chrome上使用XPath Helper

請記住,當您嘗試獲取格式不正確的html文檔的XPath時,結果可能會出錯。

0

如果XML/HTML無效,Xidel將在應用XPath之前修復它。

雖然它可能修復它不同於Firefox。你可以看到它是如何與改變:

xidel http://yourwebpage -e/--html 

如果保存輸出,並在Firefox中打開它,可以使XPath提供在。

通常,修復可能會改變中間標籤,但它可能會保持類和ID不變。因此,您可以使用//div[@id="foo"]/p[1]/span/text()//div[@id="foo"]//span[1]/text()替換一些XPath,如/html/body/div[2]/div[@id="foo"]/p[1]/p/text()//div[@id="foo"]//span[1]/text()