2011-03-09 172 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]