You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用bs4获取谷歌搜索第一条结果链接,返回None如何解决?

错误原因
  • 核心问题是请求未携带合法浏览器身份标识:requests库默认发送的请求头中User-Agent字段值为python-requests/版本号,谷歌的反爬策略会识别这类爬虫请求,返回的是反爬验证页面,而非正常用户访问的搜索结果页,页面结构中不存在class为yuRUbf的div标签,因此find方法返回None。
  • 次要可优化点:你使用的url携带了大量谷歌生成的临时会话参数,这类参数有有效期,过期后访问也可能返回异常页面,搜索请求只需要保留核心的q参数即可。
修复代码
import requests
import bs4

# 简化url,仅保留核心搜索参数
url = 'https://www.google.com/search?q=site:stackoverflow.com how to use bs4 in python'
# 添加模拟浏览器的请求头
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

request_result = requests.get(url, headers=headers)
# 也可以将解析器换成lxml,容错性比html.parser更高,需要提前执行pip install lxml安装
soup = bs4.BeautifulSoup(request_result.text, "html.parser")
productDivs = soup.find("div", {"class": "yuRUbf"})
print(productDivs)
# 如果要提取第一条结果的链接可以新增代码:print(productDivs.a['href'])
注意事项
  • 不要短时间内发送大量请求,否则谷歌会触发验证码验证甚至封禁IP。
  • 谷歌页面结构可能会不定期调整,若后续再次获取失败可以重新核对对应标签的class属性是否有变更。

内容的提问来源于stack exchange,提问作者user16748482

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 16:54:04