提问人:pupinho 提问时间:1/14/2022 更新时间:1/14/2022 访问量:462
使用封闭的标记解析 HTML 表(lxml、XPath)
Parsing HTML table (lxml, XPath) with enclosed tags
问:
任务是解析大型 HTML 表,因此我将 lxml 与 XPath 查询一起使用。有时,表格单元格可以包含封闭的标签(例如 SPAN)
<html>
<table>
<tr>
<td>1</td>
<td>2</td>
</tr>
<tr>
<td><span>3</span></td>
<td>4</td>
</tr>
</table>
</html>
我不知道如何以正确的方式处理它。 我的 Python 代码
from lxml import etree
from io import StringIO
html_text = '<html><table><tr><td>1</td><td>2</td></tr><tr><td><span>3</span></td><td>4</td></tr></table></html>'
parser = etree.HTMLParser()
tree = etree.parse(StringIO(html_text), parser)
rows = tree.xpath('//tr')
for row in rows:
row_values = []
for cell in row:
row_values.append(cell.text)
print(row_values)
生成
['1', '2']
[None, '4']
您能否介绍一下如何以适当的方式处理此类问题(封装标签)? 据我所知,我必须获得TD的最后一个子项或以某种方式设置解析器。
答:
1赞
Martin Honnen
1/14/2022
#1
用于 代替 简单地读出每个单元格的字符串值。cell.xpath('string()')
cell.text
评论