如何提取class为a-no-hover-decoration的a标签href并判断谷歌搜索模型卡片是否存在
问题1 如何正确提取符合要求的a标签的href值
你当前代码无返回结果有两个核心原因:
- 类名拼写错误:代码中填写的类名是
a-no-hover-detection,实际目标a标签的类名为a-no-hover-decoration - 未携带请求头直接发起请求:谷歌会识别无有效UA标识的请求为爬虫,返回的页面结构和浏览器端正常访问的结构完全不同,无法匹配到对应元素
正确可运行的代码示例如下:
import requests from bs4 import BeautifulSoup # 模拟桌面端Chrome请求头,绕过爬虫识别 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" } req = requests.get("https://www.google.com/search?q=White+Russian", headers=headers) soup = BeautifulSoup(req.text, "html.parser") # 匹配目标类名的a标签 target_a_tags = soup.find_all("a", class_="a-no-hover-decoration") # 提取所有href属性 href_list = [tag.get("href") for tag in target_a_tags] print(href_list)
注意:谷歌页面的类名会不定期迭代更新,如果后续出现匹配不到的情况,可以重新在浏览器检查器中确认最新的目标类名替换即可。
问题2 如何判断任意搜索词的谷歌搜索结果中是否存在这类模型卡片
判断逻辑非常简单:执行上述查找目标a标签的逻辑后,只要target_a_tags列表的长度大于0,就说明当前搜索词的结果中存在对应的模型卡片;如果列表为空,就说明不存在这类卡片。
这类模型卡片属于谷歌知识面板的衍生内容,你也可以通过提前匹配知识面板的专属容器类名做前置校验,逻辑和匹配目标a标签一致。
内容的提问来源于stack exchange,提问作者Aditya
相关产品推荐
相关产品推荐

