我试图从谷歌搜索中获得文本。我的想法是,iam在正常的谷歌搜索中使用python进行搜索,然后打印出搜索结果旁边正确网站上的文本。但是我找到的代码不起作用。
from googlesearch import search
from bs4 import BeautifulSoup
import requests
def google_search(query):
results = search(query, num_results=1)
for result in results:
response = requests.get(result)
soup = BeautifulSoup(response.content, 'html.parser')
answer = soup.find('div', class_='kno-rdesc')
if answer:
return answer.text
response = google_search("Was ist die Hauptstadt von Deutschland")
print(response)
所以基本上它应该给予回正确的盒子,你可以找到有时在正确的网站。希望有人能帮上忙。谢谢
1条答案
按热度按时间lymnna711#
据我所知,您希望从knowledge graph中提取描述。
要找到所需的选择器,可以使用
select_one()
方法。此方法接受要搜索的选择器。要获取所需的元素,需要引用带有.kno-rdesc
类的通用div,并选择其中的span
标记。生成的选择器如下所示:.kno-rdesc span
。由于对于某些搜索查询,知识图可能会丢失,因此有必要处理此异常:
此外,确保您使用的是请求头
user-agent
来充当“真实的”的用户访问。因为默认的requests
user-agent
是python-requests
,网站理解它最有可能是发送请求的脚本。Check what's youruser-agent
。代码和full example in online IDE:
输出:
或者,您可以使用SerpApi中的Google Knowledge Graph API。这是一个付费的API与免费计划。
不同之处在于,它将绕过来自Google或其他搜索引擎的阻止,因此最终用户不必弄清楚如何做到这一点,维护解析,而只需考虑检索哪些数据。
要集成的示例代码:
输出:
免责声明我为SerpApi工作