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

使用BeautifulSoup实现Google网页抓取时返回None的技术求助

排查Google搜索结果抓取返回None的问题

我帮你分析下问题所在,主要有两个核心原因,以及对应的解决办法:

问题1:请求被Google识别为爬虫,返回非结果页面

直接用requests.get()发起请求时,没有携带浏览器标识,Google会把你识别为爬虫,返回的页面里根本没有你要找的搜索结果内容,自然找不到目标元素,返回None。

问题2:目标元素的Class名称已失效

Google会频繁调整搜索页面的HTML结构,你用的Z0LcW这个Class现在已经不是展示即时答案的元素类名了,就算拿到正常页面,也匹配不到内容。


修正后的代码

下面是调整后的代码,解决了上述两个问题:

import time
from bs4 import BeautifulSoup
import requests

search = input("What do you want to ask: ")
search = search.replace(" ", "+")
link = f"https://www.google.com/search?q={search}"

# 模拟浏览器请求头,避免被反爬
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"
}

print(link)
# 携带请求头发起请求
source = requests.get(link, headers=headers).text
soup = BeautifulSoup(source, "html.parser")

# 先尝试匹配Google常用的即时答案类gsrt,若失败再尝试另一个常用类
answer_element = soup.find("div", class_="gsrt")
if not answer_element:
    answer_element = soup.find("div", class_="BNeawe iBp4i AP7Wnd")

if answer_element:
    print(answer_element.text.strip())
else:
    print("未找到答案元素,可能Google页面结构又更新了,请检查最新的HTML结构")

额外提示

如果后续再次出现类似问题,你可以自己用浏览器的开发者工具(F12)查看搜索结果页面的HTML:

  1. 搜索目标问题后,右键点击答案内容,选择「检查」
  2. 在开发者工具中找到对应元素的Class或其他属性,替换代码中的选择器即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:50:41