BeautifulSoup - 使用 "text=" 提取标签内的文本

BeautifulSoup - Extract Text Inside Tags using "text="

正在阅读这本书 "Web Scraping with Python",它很不错,但有时(令人沮丧地)掩盖了读者需要玩弄的代码,而不显示输出或提及相关限制。

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

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

针对以下标签返回了一个空字符串:

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

当这本书似乎暗示它会计算 "bees" 在我的 bs4.BeautifulSoup 页面上出现的次数时。只有在阅读 Stack 帖子和摆弄代码 4 小时后,我才发现我必须在 text="" 中输入 完整文本 才能获得所需的输出。那就是我不得不把它改成:

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

.

.

.

.

无论如何,我只想问一个分为两部分的问题: 如果我使用以下内容输出所有 标签:

fullText.findAll('strong')
  1. [WITHOUT CONVERTING TO A STRING] 有没有办法使用 findAll 或其他函数成功搜索以查看蜜蜂是否出现 作为文本的一部分标签 而无需搜索标签内的全文
  2. 是否有 BeautifulSoup 或 findAll 涉及的其他函数,它会从输出中去除标签定义,并且只会显示标签中的全文

我很清楚第二个问题之前有人问过。我试过的都没有真正奏效。如果您可以包括您的输出,那就太好了,这样我就知道我应该期待什么,并且可以在遇到问题时比较结果。

  1. soup.find_all('strong', string=re.compile("bee"))

这将 return 所有 strong 标签的列表,其中 "bee" 作为文本的一部分。它使用正则表达式。

  1. string 属性会这样做。

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

soup.find_all('strong') 将 return 列出所有强标签,因此我将其编入索引以访问特定标签。