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

使用BeautifulSoup爬取谷歌搜索结果返回None的问题求助

问题分析与解决方法

核心问题:谷歌动态生成的CSS类名不可靠

你复制的LrzXr kno-fv wHYlTd z8gr9e这类类名是谷歌动态生成的,每次请求页面都会随机变化,依赖固定类名查找元素必然返回None。谷歌为了反爬,会频繁更新这类无意义的类名,不能用它来定位目标内容。

替代方案:基于语义化属性定位元素

谷歌知识卡片里的信息会附带语义化的data-attrid属性,这个属性比动态类名稳定得多,可以用来精准定位出生日期元素。

修改后的代码示例:

import requests
from bs4 import BeautifulSoup

headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.5735.134 Safari/537.36"}
source_code = requests.get("https://www.google.com/search?q=Guillermo+Saccomanno", headers=headers)
plain_text = source_code.text
soup = BeautifulSoup(plain_text, features="html.parser")

# 通过语义化属性定位出生日期所在的父元素
birth_date_container = soup.find("div", {"data-attrid": "kc:/people/person:birth date"})
if birth_date_container:
    # 提取子span标签中的文本内容
    birth_info = birth_date_container.find("span").get_text(strip=True)
    print(birth_info)
else:
    print("未找到目标出生信息")

额外注意事项

  • 运行代码前可以先打印plain_text内容,确认谷歌是否返回了正常的搜索结果(如果触发反爬,会返回人机验证页面,此时需要添加浏览器的Cookie请求头,或增加请求间隔模拟人类行为)。
  • 若搜索结果中没有知识卡片,也会返回None,这种情况可以尝试调整搜索关键词,比如加上"birth date"后缀。

内容的提问来源于stack exchange,提问作者チェズ

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 14:02:18