【发布时间】:2016-10-17 17:33:23
【问题描述】:
我想从互联网上获取数据,我已经成功地通过 HTML 解析,现在我需要 xpath 从表中提取它。所以我想从第二行的第二行中提取数据。我该怎么做?我写了这个://table[1]/tr[10]/td[2] 但它没有显示任何东西
谢谢
【问题讨论】:
-
能否提供需要遍历的Html结构??
标签: html xml xpath html-table
我想从互联网上获取数据,我已经成功地通过 HTML 解析,现在我需要 xpath 从表中提取它。所以我想从第二行的第二行中提取数据。我该怎么做?我写了这个://table[1]/tr[10]/td[2] 但它没有显示任何东西
谢谢
【问题讨论】:
标签: html xml xpath html-table
问题在于 HTML 不是 XML,尽管有任何相似之处。这就是为什么您通常不能使用 XML 解析器来解析 HTML(这是使用大多数 XPath 实现所必需的)。
一种选择是使用 TagSoup (Java)、Beautiful Soup (Python) 之类的东西或用于其他平台的类似库。这些库允许像 XML 一样解析 HTML,这意味着标准 XML 库可用于对数据进行操作(XPath、XSLT、DOM 操作、SAX 事件等......)
另一种选择是尝试使用xmllint 之类的东西(使用--html 和--xmlout 选项)。这会将 HTML 转换为正确的 XML,允许您使用任何您想要的 XML 工具。
【讨论】:
第一个表的第二行的第二列(根据您的问题假设)不会是
//table[1]/tr[2]/td[2]
这不考虑可能存在的任何<th> 元素。
真的不知道你为什么要指定第十行 (tr[10])
【讨论】: