删除评论标签,但对BeautifulSoup不满意
问题内容:
我正在使用BeautifulSoup练习一些Web抓取,特别是我在查看NFL游戏数据,更具体地说是在查看此页面上的“ Team
Stats”表(https://www.pro-football-reference.com/boxscores/201809060phi。
htm
)。
在查看表的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,但是我也没有找到一种实现此目的的好方法。
问题答案:
from bs4 import BeautifulSoup, Comment
for comments in soup.findAll(text=lambda text:isinstance(text, Comment)):
comments.extract()
由此,您可以取出所有注释,并在注释之间插入文本,并将其放入BS4中以提取其中的数据。希望这行得通。