使用Python的googlesearch库时遭遇429错误的技术求助
原问题代码
from googlesearch import search query = input(": ") for j in search(query, tld="co.in", num=1, user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36",): print(j)
运行上述代码时,即便已设置User-Agent且限制返回结果为1,仍触发429 Too Many Requests错误,可通过添加Cookie缓解该问题。
解决方案:给search函数传入Cookie参数
googlesearch的search函数原生支持cookie参数,只需从浏览器获取谷歌搜索的有效Cookie,转换成字典后传入即可。
步骤1:获取浏览器中的谷歌Cookie
- 打开浏览器访问
https://www.google.co.in,可登录Google账号(登录后的Cookie有效期更长) - 按F12打开开发者工具,切换到「Network」标签页,刷新页面
- 在请求列表中找到第一个针对
www.google.co.in的GET请求,查看其「Request Headers」里的Cookie字段 - 将Cookie字符串拆解为键值对字典,比如把
"NID=xxx; SID=yyy"转换为{"NID": "xxx", "SID": "yyy"}
步骤2:修改代码传入Cookie
把获取到的Cookie字典传入search函数的cookie参数:
from googlesearch import search query = input(": ") # 替换为你从浏览器获取的Cookie键值对 google_cookies = { "NID": "你的NID值", "SID": "你的SID值", # 保留其他必要的Cookie项 } for result in search( query, tld="co.in", num=1, user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36", cookie=google_cookies ): print(result)
注意事项
- Cookie存在有效期,过期后需要重新从浏览器获取
- 即使添加了Cookie,也不要短时间内频繁发送请求,谷歌仍会对请求频率做限制
- 如果需要长期维护会话,可以结合
requests.Session()自动管理Cookie,但直接传入cookie参数是最快捷的方式
内容的提问来源于stack exchange,提问作者Aslantokot
相关产品推荐
相关产品推荐

