我正在使用BeautifulSoup练习一些Web抓取,特别是我正在查看NFL游戏数据,更具体地说是在本页(https://www.pro-football-reference.com/boxscores/201809060phi.htm)上的“ Team Stats”表。
在查看表的HTML时,我看到的是这样的:
<div class="section_heading">...</div>
<div class="placeholder"></div>
<!--
<div class="table_outer_container">
<div class="overthrow table_container" id="div_team_stats">
<table class="stats_table" id="team_stats" data-cols-to-freeze=1>
....
</table>
</div>
</div>
-->
本质上,呈现给页面的HTML作为注释存储在HTML中,因此我可以找到表的div,但是BeautifulSoup无法解析表本身,因为它全部在注释中。
是否有解决此问题的好方法,以便可以使用BeautifulSoup解析表HTML?我想出了如何提取注释文本,但是我不知道是否存在将结果String转换为可用HTML的好方法。或者,可以简单地删除注释标签,我认为可以将其解析为HTML,但是我也没有找到一种实现此目的的好方法。
答案 0 :(得分:1)
from bs4 import BeautifulSoup, Comment
for comments in soup.findAll(text=lambda text:isinstance(text, Comment)):
comments.extract()
由此,您将能够删除所有注释,并在注释之间插入文本,并将其放入BS4中以提取其中的数据。希望这行得通。