当前位置: 首页 > 面试题库 >

如何用美丽汤找到所有评论

艾鹭洋
2023-03-14
问题内容

我想使用漂亮的汤删除html文件中的所有注释。由于BS4将每个注释作为一种特殊类型的可导航字符串,所以我认为这段代码可以工作:

for comments in soup.find_all('comment'):
     comments.decompose()

所以那行不通…。如何使用BS4查找所有评论?


问题答案:

您可以将函数传递给find_all()来帮助它检查字符串是否为Comment。

例如我有下面的HTML:

<body>
   <!-- Branding and main navigation -->
   <div class="Branding">The Science &amp; Safety Behind Your Favorite Products</div>
   <div class="l-branding">
      <p>Just a brand</p>
   </div>
   <!-- test comment here -->
   <div class="block_content">
      <a href="https://www.google.com">Google</a>
   </div>
</body>

码:

from bs4 import BeautifulSoup as BS
from bs4 import Comment
....
soup = BS(html, 'html.parser')
comments = soup.find_all(string=lambda text: isinstance(text, Comment))
for c in comments:
    print(c)
    print("===========")
    c.extract()

输出将是:

Branding and main navigation 
============
test comment here
============

顺便说一句,我认为find_all('Comment')不起作用的原因是(来自BeautifulSoup文档):

输入名称的值,您将告诉Beautiful Soup仅考虑具有特定名称的标签。 文本字符串 以及名称不匹配的标记 都将被忽略



 类似资料:
  • 问题内容: 我正在尝试解析一个网站,并通过BeautifulSoup.findAll获取一些信息,但它并没有全部找到。.我正在使用python3 代码是这个 它只打印其中一半… 问题答案: 不同的HTML解析器对损坏的HTML的处理方式不同。该页面提供了损坏的HTML,解析器对此的处理不佳: 标准库在此特定页面上的麻烦较少: 使用将其转换为您的特定代码示例,您将这样指定解析器:

  • 我看了stackoverflow上关于漂亮汤的大部分问题,只从网站上抓取了一半的数据,但是到目前为止没有一个有效。我尝试过将该功能更改为lxml或html5lib等。我也尝试使用硒,现在我尝试用硒向下滚动网站,加载网站上的所有内容,并使用漂亮的汤来抓取数据,但是当需要超过100个项目时,它只保留抓取16个项目。我在下面附上了我的代码。 我试图刮掉的网站链接:https://www.ranker.c

  • 我试图抓取这个网站:https://www.senate.gov/general/contact_information/senators_cfm.cfm 我的代码: 问题是它实际上并没有到达网站。我在soup var中得到的HTML根本不是正确网页中的HTML。 我不知道从这里去哪里!任何和所有的帮助都将不胜感激。

  • 我使用BeautifulSoup从HTML文件中提取信息。我希望能够捕获信息的位置,即BS标记对象的标记在HTML文件中的偏移量。 有办法做到这一点吗? 我目前使用的是lxml解析器,因为它是默认的。

  • 问题内容: 我正在尝试在以下html代码中检索一些标签。这只是一部分 您可以在这里找到该网页 我的Python代码如下 但是text变量为空,如果我打印div变量,除了标签外,我上面的HTML完全一样。 问题答案: BeautifulSoup可以使用不同的解析器来处理HTML输入。此处的HTML输入有些破损,并且默认的解析器不能很好地处理它。 改用解析器:

  • 问题内容: 我正在尝试从Google搜索结果中提取链接。检查元素告诉我,我感兴趣的部分具有“ class = r”。第一个结果如下所示: 要提取“ href”,我要做: 但是我意外地得到: 我想要的地方: 属性“ ping”似乎使它感到困惑。有任何想法吗? 问题答案: 发生了什么? 如果您打印响应内容(即),则会看到您得到的HTML完全不同。页面源和响应内容不匹配。 因为内容是动态加载的,所以 不