Python Pytrends:请求失败:Google返回了一个代码为429的响应
我使用Pytrends提取Google趋势数据,如:Python Pytrends:请求失败:Google返回了一个代码为429的响应,python,google-trends,Python,Google Trends,我使用Pytrends提取Google趋势数据,如: from pytrends.request import TrendReq pytrend = TrendReq() pytrend.build_payload(kw_list=['bitcoin'], cat=0, timeframe=from_date+' '+today_date) 然后返回一个错误: ResponseError: The request failed: Google returned a response with
from pytrends.request import TrendReq
pytrend = TrendReq()
pytrend.build_payload(kw_list=['bitcoin'], cat=0, timeframe=from_date+' '+today_date)
然后返回一个错误:
ResponseError: The request failed: Google returned a response with code 429.
我昨天做的,但不知为什么现在不行了!github的源代码也失败:
pytrends = TrendReq(hl='en-US', tz=360, proxies = {'https': 'https://34.203.233.13:80'})
我怎样才能解决这个问题?非常感谢 这一次花了一段时间,但结果证明该库只需要更新。您可以查看我在此处发布的一些方法,这两种方法都产生了429状态响应: 最终,通过在bash提示符下运行以下命令,我能够让它再次工作: 运行:
pip安装--升级--用户git+https://github.com/GeneralMills/pytrends
以获取最新版本
希望这对你也有用
编辑:
如果无法从源代码进行升级,您可能会遇到以下问题:
pip安装pytrends——升级
另外,如果在Windows上,请确保您以管理员身份运行git。通过pip安装运行升级命令后,您应该重新启动python内核并重新加载pytrend库。即使在使用
pip install--upgrade--user git更新模块之后,我也遇到了同样的问题+https://github.com/GeneralMills/pytrends
并重新启动python
但是,通过以下方法解决了该问题:
而不是
pytrends = TrendReq(hl='en-US', tz=360, timeout=(10,25), proxies=['https://34.203.233.13:80',], retries=2, backoff_factor=0.1, requests_args={'verify':False})
刚才跑:
pytrend = TrendReq()
希望这能有所帮助 TLDR;我用自定义补丁解决了这个问题 解释 问题来自谷歌机器人识别系统。和其他类似的系统一样,它停止服务来自可疑客户的过于频繁的请求。用于识别可信客户机的一些特性是存在由网页上的javascript代码生成的特定头。不幸的是,python请求库没有针对那些bot识别系统提供这样的伪装,因为javascript代码甚至没有执行。 因此,我的补丁背后的想法是利用我的浏览器与google trends交互生成的标题。这些标题由浏览器生成,同时我使用我的谷歌帐户登录,换句话说,这些标题与我的谷歌帐户链接,因此对他们来说,我是值得信赖的 解决方案 我用以下方法解决:
从pytrends.request导入TrendReq作为UTrendReq
GET_方法='GET'
导入请求
标题={
...
}
类趋势请求(UTrendReq):
定义获取数据(self,url,method=get\u method,trim\u chars=0,**kwargs):
return super()。_get_数据(url,method=get_方法,trim_chars=trim_chars,headers=headers,**kwargs)
若谷歌怀疑你们滥发垃圾信息、抓取信息或其他滥用信息,他们会很快封锁你们的ipsystem@zimdero谢谢,如果我还想用它怎么办?“代理”命令不起作用。我正在积极尝试解决同样的问题。我在为一篇学术论文做研究,它昨天起作用了,今天我还没有得到一个成功的回复。期待找到一个好的解决方案…@WWH98932你在做什么?我正在做同样的精确搜索。我想我们必须从web界面下载csv文件,然后将其引入JupyterLab并放入数据框中。不管怎么说,这就是我倾向于的方法。@lopezdp同样,我是手动操作的,真的很烦人。我明天会去别的地方看看它是否能改变我的IP地址…嗯,是的。这对我有用。听起来好像您没有安装git,或者您的PATH变量没有设置为接受git命令。您应该安装git+python3,至少这是我的环境。我直接从他们的源代码升级。pip3.6安装--升级--用户git+强制从4.4升级到4.5谢谢@qpaycm哈哈!斗争是真实的!我记得那个问题当时对我来说也很麻烦。。。以下是我使用该库的项目,以防它可以帮助您了解:多亏您在几个小时内完成了我的研究。今天,在经历429之后,第二次运行必须代理。现在,我认为使用代理传送带将有更高的机会获得最大重试次数超过错误。我想我应该从>exceptions.py?@qpaycm处理它,这取决于你在做什么。在纠正上述问题后,我也有同样的经历。我要做的是在循环的每次迭代中处理请求的数量。在我的具体案例中,我查询了60天的周期,我只是将其切换到90个周期,以最小化迭代周期的总数,使其保持在429限制之下。我怀疑您可能有类似的情况,您可以调整请求量的大小,以便稍微减少总请求迭代次数。。。反正我就是这么做的。