当前位置: 首页 > 面试题库 >

解析HTML表到Python列表?

贡建修
2023-03-14
问题内容

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

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

谢谢您的帮助!


问题答案:

您应该使用一些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'}


 类似资料:
  • 问题内容: 我正在尝试将来自纽约证券交易所网站(http://www1.nyse.com/about/listed/IPO_Index.html)的表格抓取到熊猫数据框中。为了做到这一点,我有一个像这样的设置: 但是,当我在页面上运行此命令时,列表中返回的所有表实际上都是空的。当我进一步调查时,我发现该表是由javascript生成的。在我的Web浏览器中使用开发人员工具时,我看到该表看起来与带有

  • 问题内容: 我正在将我的某些网络抓取代码从R转换为Python(我无法让geckodriver与R一起使用,但它与Python一起使用)。无论如何,我试图了解如何使用Python解析和读取HTML表。快速背景,这是我的R代码: 我将HTML页面解析为doc对象。然后,我将以开始,并通过更大的数字,直到看到所需的数据。在这种情况下,我去看了想要的数据。然后,我将读取该HTML表并将其分配给WebEl

  • 我有下面的HTML字符串,我想把它转换成一个数组。 这是我当前使用的代码: 然而,这给出了以下输出: 但我在寻找这个结果: 这可能吗?

  • 问题内容: 我想使用HTML敏捷包来解析复杂网页中的表,但是我迷失在对象模型中。 我看了链接示例,但没有以这种方式找到任何表数据。我可以使用XPath获取表吗?在加载有关如何获取表的数据之后,我基本上迷失了。我以前在Perl中完成过此操作,虽然有点笨拙,但是可以。()。 如果有人能够阐明正确的对象顺序进行解析,我也很高兴。 问题答案: 怎么样:使用HTML Agility Pack 请注意,如果需

  • 假设我期望一个列表列表,其中内部列表具有不同的类型和长度,例如。G 如何使用argparse解析上述列表? 关于stackoverflow最有用的问题: 类似的问题也存在,最有用的问题在这里。但是在我的例子中,它们还不够好,因为它们忽略了列表嵌套了不同的数据类型和长度的事实。

  • 我需要的是在第二个中获取第二个 的文本,并对表中的每一组 标记执行此操作。