删除评论标签,但对BeautifulSoup不满意

时间:2018-10-18 01:09:05

标签: python html beautifulsoup

我正在使用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,但是我也没有找到一种实现此目的的好方法。

1 个答案:

答案 0 :(得分:1)

from bs4 import BeautifulSoup, Comment
for comments in soup.findAll(text=lambda text:isinstance(text, Comment)):
    comments.extract()

由此,您将能够删除所有注释,并在注释之间插入文本,并将其放入BS4中以提取其中的数据。希望这行得通。