【问题标题】:Remove comment tag but NOT content with BeautifulSoup删除评论标签,但不包含 BeautifulSoup 的内容
【发布时间】:2019-03-22 18:19:44
【问题描述】:

我正在使用 BeautifulSoup 练习一些网页抓取,特别是我正在查看 NFL 比赛数据,更具体地说,我正在查看此页面 (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?我想出了如何提取评论文本,但我不知道是否有一种将结果字符串转换为可用 HTML 的好方法。或者,可以简单地删除评论标签,我认为这会让它被解析为 HTML,但我也没有找到一个好的方法。

【问题讨论】:

    标签: python html beautifulsoup


    【解决方案1】:
    from bs4 import BeautifulSoup, Comment
    for comments in soup.findAll(text=lambda text:isinstance(text, Comment)):
        comments.extract()
    

    从此您将能够取出所有 cmets 并获取 cmets 之间的文本并将其放入 BS4 以提取其中的数据。希望这行得通。

    【讨论】:

    • 我从未真正尝试将评论字符串放入 BeautifulSoup,我认为解析它会遇到问题。我一定是越来越沮丧了。感谢您的帮助!
    猜你喜欢
    • 2014-06-11
    • 2020-02-26
    • 2020-10-27
    • 2023-03-27
    • 1970-01-01
    • 2014-05-03
    • 2017-11-16
    • 1970-01-01
    • 2021-10-09
    相关资源
    最近更新 更多