使用Python获取谷歌搜索右侧信息失败,寻求代码修复方案
问题原因及解决方案
核心问题
你的代码存在两个关键问题:
- 错误地访问了搜索结果的目标网页,而右侧信息框是谷歌搜索结果页面的元素,并非目标网站的内容
- 谷歌有反爬机制,直接用
requests请求会被拦截,且旧的CSS选择器kno-rdesc已失效
修正后的代码
from bs4 import BeautifulSoup import requests def google_search(query): # 构造谷歌搜索URL,指定德语界面匹配查询语种 search_url = f"https://www.google.com/search?q={requests.utils.quote(query)}&hl=de" # 添加请求头模拟浏览器访问,避免反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36" } response = requests.get(search_url, headers=headers) response.raise_for_status() # 抛出请求错误,便于排查问题 soup = BeautifulSoup(response.content, 'html.parser') # 匹配当前谷歌右侧信息框的描述元素 answer = soup.find('div', class_='Z0LcW t2b5Cf') if not answer: # 备选选择器,兼容不同展示场景 answer = soup.find('span', class_='hgKElc') return answer.text.strip() if answer else "未找到右侧信息框内容" result = google_search("Was ist die Hauptstadt von Deutschland") print(result)
关键改进点
- 直接请求谷歌搜索结果页,而非跳转至目标网站
- 添加
User-Agent请求头模拟浏览器,绕过基础反爬限制 - 更新CSS选择器适配当前谷歌页面结构(谷歌会不定期调整元素类名,若后续失效需重新检查页面结构)
- 增加备选选择器提升兼容性
- 添加请求错误处理,便于排查网络问题
内容的提问来源于stack exchange,提问作者Yarma
相关产品推荐
相关产品推荐

