我们使用此代码查找包含文本“Fiscal”的标签
soup.find(class_="label",text=re.compile("Fiscal"))
如何在此处添加多个条件。
让我们说标签包含“财政”和“年”。</ p>
或包含“Fiscal”而非“year”的标签
答案 0 :(得分:7)
如果您发现标准有所不同并且可能会变得更复杂,那么您可以使用函数作为过滤器,例如:
让我们说标签包含“财政”和“年”。</ p>
t = soup.find(class_="label", text=lambda s: "Fiscal" in s and "year" in s)
或包含“Fiscal”而非“year”的标签
t = soup.find(class_="label", text=lambda s: "Fiscal" in s and "year" not in s)
你也可以在这里使用正则表达式,但它可能不太可读。
答案 1 :(得分:0)
您可以将文字作为列表传递(此网站是我以前的答案中的示例:))
import requests
from bs4 import BeautifulSoup
res = requests.get('http://www.snapdeal.com/products/computers-laptops?sort=plrty&')
soup = BeautifulSoup(res.text)
elements = soup.find_all('div', {'class': 'lfloat'}, text=re.compile(r'(14|4)')) # | means 'or'
print elements
打印[<div class="lfloat">(14)</div>, <div class="lfloat">(4)</div>, <div class="lfloat">(45)</div>]
所以你可以在你的案例中使用soup.find_all(class_="label",text=re.compile(r'(Fiscal|yeah)))
要按完全匹配查找,您可以将text
作为列表传递:soup.find_all(class_="label",text=['Fiscal', 'yeah'])
&#34;找到财政而不是啊&#34;使用以下内容可以涵盖逻辑:soup.find_all('div', {'class': 'lfloat'}, text=re.compile(r'(Fiscal|[^yeah])'))
(此处不确定)