首页 > 解决方案 > 抓取包含多个子字符串(即关键字)的所有字符串的网页

问题描述

我对此很陌生,并且一直在努力实现自己的目标,因此我想我会向社区寻求帮助。如果我的一个关键词在其中显示为子字符串,我希望能够从网页中提取完整的文本字符串。我一直在用漂亮的汤,但我愿意尝试别的东西。

我用于示例的网站是 www.meridianenergy.co.nz。我感兴趣的关键词是“可持续”、“可再生”和“电动汽车”。本质上,我想提取主页上可见的每个字符串,其中一个或多个这些术语出现在其中。

到目前为止,我已经能够使用下面的代码一次完成一个学期,但如果可能的话,我希望能够一次查找所有关键词(因为我可能需要添加更多关键词随着时间的推移)。谢谢!

import requests
from bs4 import BeautifulSoup

page = requests.get('https://www.meridianenergy.co.nz')
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find_all(string=lambda text: 'renewable' in text)
print(results)  

标签: pythonlambdabeautifulsoup

解决方案


您可以以列表格式添加所有关键字。然后在遍历汤对象时对其进行迭代。

import requests
from bs4 import BeautifulSoup

page = requests.get('https://www.meridianenergy.co.nz')
soup = BeautifulSoup(page.content, 'html.parser')
keywords_to_find = ['sustainable', 'renewable', 'electric cars']
results = soup.find_all(string=lambda text: text and any (x in text for x in keywords_to_find))
print(results)

结果

['100% 可再生能源发电','我们产生的所有能源都来自 100% 可再生能源——风能、水能和太阳能。我们是新西兰最大的发电机,通过我们的风电场、水电站和太阳能电池板发电。这就是魔法发生的地方。我们相信可再生能源是我们星球未来的唯一出路。', 'Turbine™ - 用经过认证的可再生能源酿造', “我们为车库项目的团队感到非常自豪。去年,他们用来自我们布鲁克林涡轮机的 100% 经认证的可再生能源。这就是我们提供帮助的一点——我们很高兴能够为其他企业开发经认证的可再生能源产品。", ' 您可以在一瓶 Garage Project 的 Turbine™\xa0beer 上发现新西兰第一个经过认证的可再生能源标志。干杯。',' 是一家新西兰电力公司,通过 100% 可再生能源——风、水和太阳能发电。我们相信这是人类和地球前进的唯一途径。']

希望这可以帮助。


推荐阅读