我想使用 beautifulsoup 从 html 代码中抓取表格。 html 的片段如下所示。使用时table.findAll('tr')
我得到整个表,而不仅仅是行。 (可能是因为 html 代码中缺少结束标签?)
<TABLE COLS=9 BORDER=0 CELLSPACING=3 CELLPADDING=0>
<TR><TD><B>Artikelbezeichnung</B>
<TD><B>Anbieter</B>
<TD><B>Menge</B>
<TD><B>Taxe-EK</B>
<TD><B>Taxe-VK</B>
<TD><B>Empf.-VK</B>
<TD><B>FB</B>
<TD><B>PZN</B>
<TD><B>Nachfolge</B>
<TR><TD>ACTIQ 200 Mikrogramm Lutschtabl.m.integr.Appl.
<TD>Orifarm
<TD ID=R> 30 St
<TD ID=R> 266,67
<TD ID=R> 336,98
<TD>
<TD>
<TD>12516714
<TD>
</TABLE>
这是我的 python 代码来展示我所遇到的问题:
soup = BeautifulSoup(data, "html.parser")
table = soup.findAll("table")[0]
rows = table.find_all('tr')
for tr in rows:
print(tr.text)
正如他们中所述文档 html5lib
像网络浏览器一样解析文档(比如lxml
在这种情况下)。它会在需要时尝试通过添加/关闭标签来修复您的文档树。
在您的示例中,我使用 lxml 作为解析器,它给出了以下结果:
soup = BeautifulSoup(data, "lxml")
table = soup.findAll("table")[0]
rows = table.find_all('tr')
for tr in rows:
print(tr.get_text(strip=True))
注意lxml
添加了 html 和 body 标签,因为它们不存在于源中(它将尝试创建一个格式良好的文档,如之前所述)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)