2011-03-09 105 views
-3

我想從互聯網獲取數據,並且我一直在用HTML解析,現在我需要xpath從表中提取它。所以我想從第二行的第二行提取數據。 ?我會怎麼做,我寫了這個://table[1]/tr[10]/td[2],但它並沒有顯示任何東西xpath幫助任何一個?

感謝

+0

u能提供HTML的,你需要遍歷結構? – 2011-03-09 04:24:26

回答

0

的問題是,HTML是不是XML,儘管任何相似之處。這就是爲什麼你通常不能使用XML解析器解析HTML(這是使用大多數XPath實現所必需的)。

一種選擇是使用類似於TagSoup(Java),Beautiful Soup(Python)或其他平臺的類似庫。這些庫允許將HTML解析爲XML,這意味着標準XML庫可用於對數據進行操作(XPath,XSLT,DOM操作,SAX事件等)。

另一種選擇是是嘗試使用類似xmllint(與--html--xmlout選項)。這會將HTML轉換爲正確的XML,允許您使用任何您想要的XML工具。

+0

儘管可以用DOM解析器解析HTML。在XML解析器中,有效的XHTML也應該沒問題。目前還不清楚他們在使用什麼。 – Phil 2011-03-09 04:29:26

+0

XML解析器(DOM,SAX,push,pull等)的類型與您是否可以解析HTML無關。如果它不是格式良好的XML(通常不是HTML),那麼你就不能用XML解析器解析它。但XHTML *是* XML,因此您可以使用任何XML解析器解析它。 – 2011-03-09 04:35:46

+0

有很多可以處理HTML的DOM解析器。例如,PHP的DOMDocument以及大多數JavaScript引擎中內置的DOMDocument。 – Phil 2011-03-09 05:18:16

0

會不會第一個表(從你的問題假設)的第二行的第二列是

//table[1]/tr[2]/td[2] 

這不考慮任何<th>元素可能存在。

真的不知道爲什麼你指定的第十行(tr[10]