Beautiful Soup:如何获取与任何给定字符串匹配的数据

Posted

技术标签:

【中文标题】Beautiful Soup:如何获取与任何给定字符串匹配的数据【英文标题】:Beautiful Soup : How to get data which matches any of the given string 【发布时间】:2019-11-09 13:40:21 【问题描述】:

我正在尝试找出可以匹配任何输入字符串的元素。

例如:-

data = soup.find(text="something")

这很好用,但是当我必须搜索这样的东西时如何使用它:-

data = soup.find(text="something" or text="another something")

如果不可能搜索多个字符串,那么执行类似操作的最佳方法应该是什么。

【问题讨论】:

【参考方案1】:

Regex 无疑是搜索多个文本的有效且有用的方法,但人们经常忘记(或不知道)您可以传入字符串列表,Beautiful Soup 将返回与名单:

from bs4 import BeautifulSoup

html = """
<div>something</div>
<div>something else</div>
"""
soup = BeautifulSoup(html, "lxml")
items = soup.find_all(text=["something", "something else"])
print(items)

输出

['something', 'something else']

【讨论】:

【参考方案2】:

您可以在此处使用正则表达式。

例如:

import re
data = soup.find(text=re.compile("something|another something"))

【讨论】:

以上是关于Beautiful Soup:如何获取与任何给定字符串匹配的数据的主要内容,如果未能解决你的问题,请参考以下文章

爬虫---Beautiful Soup 爬取知乎热榜

如何使用 Python 3 和 Beautiful Soup 获取 Wikipedia 文章的文本?

Python爬虫编程思想(59): 用Beautiful Soup CSS选择器获取属性值与文本

使用 Beautiful Soup 查找特定类

使用 Beautiful Soup 从非类部分获取数据

Beautiful Soup 与亚马逊有问题,它