首页 文章

BeautifulSoup - 使用“text =”在标签内提取文本

提问于
浏览
0

正在阅读“使用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页面上发生多少次"bees" . 只有在阅读了4个小时的Stack帖子和摆弄代码之后,才发现我必须在text =“”中输入 full piece of text 来获得所需的输出 . 那是 I had to change it to:

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

.

.

.

.

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

fullText.findAll('strong')
  • [ WITHOUT CONVERTING TO A STRING ]有没有办法使用findAll或其他功能成功搜索以查看蜜蜂是否作为标签内部文本的一部分出现 without having to search for the full text inside the tag

  • 是否存在与findAll相关的BeautifulSoup或其他函数,它将从输出中删除标记定义,并仅显示标记内的全文

我很清楚,之前已经问过 2nd question . 我没有尝试过真的有效 . 如果你可以包括你的输出,这将是伟大的,以便我知道我应该期待什么,并可以比较结果,如果我遇到问题 .

1 回答

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

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

    • string 属性会这样做 .

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

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

相关问题