使用Python爬取Google搜索链接失败,结果列表始终为空
解决Google搜索结果链接获取为空的问题
问题根源
Google会通过请求头识别非浏览器发起的请求,requests.get()默认的User-Agent会被判定为爬虫,返回的页面不包含正常搜索结果的结构(即没有.yuRUbf类的元素),导致你获取的列表始终为空。
修复方案
1. 添加模拟浏览器的请求头
在请求中加入headers参数,伪装成普通浏览器的请求,让Google返回正常的搜索结果页面。
2. 简化关键词编码
使用urllib.parse.quote()自动处理关键词的URL编码,比手动拆分空格更可靠,还能兼容特殊字符(比如示例中的ç)。
修改后的完整代码
import requests import bs4 from urllib.parse import quote searchkey = "behzat ç oyuncuları" print(searchkey) # 自动处理关键词的URL编码 encoded_key = quote(searchkey) print("Googling...") # 添加模拟浏览器的请求头 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" } r = requests.get(f"https://www.google.com/search?q={encoded_key}", headers=headers) # 可选:若仍无结果,可打印r.text检查返回的页面内容是否正常 # print(r.text) soap = bs4.BeautifulSoup(r.text, "html.parser") lists = soap.select(".yuRUbf a") print(lists) for link in lists: print(link.get("href"))
额外说明
- 若后续Google页面结构变更,
.yuRUbf类可能失效,可通过浏览器开发者工具(F12)查看搜索结果链接所在的最新元素选择器。 - 频繁发起请求可能触发Google反爬机制,建议添加适当的请求间隔。
内容的提问来源于stack exchange,提问作者Alp
相关产品推荐
相关产品推荐

