BeautifulSoup - 使用“text =”

时间:2016-06-05 01:39:45

标签: search beautifulsoup extract partial findall

正在阅读“使用Python进行Web Scraping”这本书并且它很不错,但有时(令人沮丧地)掩盖了读者需要在不显示输出但也没有提及相关限制的情况下使用的代码。

我花了4个小时试图找出原因:

fullText.findAll('a', text="bees")

返回一个关于以下标记的空字符串:

<a class="search">Why are the bees in my soup bees are bad</a>

当这本书似乎暗示它会计算在我的bs4.BeautifulSoup页面上发生了多少次“蜜蜂”。只有在阅读了4个小时的帖子和摆弄代码后,我发现我必须在text =“”中键入完整的文本以获得所需的输出。那是我必须将其更改为:

fullText.findAll('a', text="Why are the bees in my soup bees are bad")

无论如何,我想问的只是一个2部分的问题: 如果我输出了所有的&lt;强大&gt;标签使用以下内容:

fullText.findAll('strong')
  1. [没有转换为STRING ]是否有一种方法可以使用findAll或其他功能成功搜索以查看蜜蜂是否出现作为标签内部文本的一部分而没有搜索标记内的全文
  2. 是否有一个与findAll相关的BeautifulSoup或其他函数,它将从输出中删除标记定义,并且只显示标记中的全文
  3. 我很清楚之前已经问过 第二个问题 。我没有尝试过真的有效。如果你可以包含你的输出,这将是很好的,这样我就知道我应该期待什么,并且如果我遇到问题可以比较结果。

1 个答案:

答案 0 :(得分:2)

  1. soup.find_all('strong', string=re.compile("bee"))
  2. 这将返回包含strong的所有"bee"代码的列表,作为文本的一部分。它使用正则表达式。

    1. string属性会这样做。

      soup.find_all('strong')[0].string

    2. soup.find_all('strong')将返回所有强标记的列表,因此我将其编入索引以访问特定标记。