一尘不染

解析HTML表到Python列表?

html

我想获取一个HTML表并对其进行解析以获得字典列表。每个列表元素将是一个与表中的一行相对应的字典。

例如,如果我有一个包含三列(用标题标签标记),“事件”,“开始日期”和“结束日期”的HTML表,并且该表有5个条目,我想将该表解析为返回长度为5的列表,其中每个元素都是带有键“事件”,“开始日期”和“结束日期”的字典。

谢谢您的帮助!


阅读 742

收藏
2020-05-10

共1个答案

一尘不染

您应该使用一些HTML解析库,例如lxml

from lxml import etree
s = """<table>
  <tr><th>Event</th><th>Start Date</th><th>End Date</th></tr>
  <tr><td>a</td><td>b</td><td>c</td></tr>
  <tr><td>d</td><td>e</td><td>f</td></tr>
  <tr><td>g</td><td>h</td><td>i</td></tr>
</table>
"""
table = etree.HTML(s).find("body/table")
rows = iter(table)
headers = [col.text for col in next(rows)]
for row in rows:
    values = [col.text for col in row]
    print dict(zip(headers, values))

版画

{'End Date': 'c', 'Start Date': 'b', 'Event': 'a'}
{'End Date': 'f', 'Start Date': 'e', 'Event': 'd'}
{'End Date': 'i', 'Start Date': 'h', 'Event': 'g'}
2020-05-10