作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 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 code 429.
我昨天成功了,但出于某种原因现在无法使用了! github的源码也失败了:
pytrends = TrendReq(hl='en-US', tz=360, proxies = {'https': 'https://34.203.233.13:80'})
我该如何解决这个问题?非常感谢!
最佳答案
TLDR;我用自定义补丁解决了这个问题
问题来自谷歌机器人识别系统。与其他类似系统一样,它会停止为来自可疑客户端的过于频繁的请求提供服务。用于识别可信赖客户端的一些功能是存在由网页上的 javascript 代码生成的特定 header 。不幸的是,python 请求库不提供针对那些机器人识别系统的这种级别的伪装,因为甚至不执行 javascript 代码。所以我的补丁背后的想法是利用我的浏览器生成的标题与谷歌趋势交互。这些 header 是在我使用我的谷歌帐户登录时由浏览器生成的,换句话说,这些 header 与我的谷歌帐户相关联,因此对他们来说,我是值得信赖的。
我是这样解决的:
from pytrends.request import TrendReq as UTrendReq
GET_METHOD='get'
import requests
headers = {
...
}
class TrendReq(UTrendReq):
def _get_data(self, url, method=GET_METHOD, trim_chars=0, **kwargs):
return super()._get_data(url, method=GET_METHOD, trim_chars=trim_chars, headers=headers, **kwargs)
关于python - 派趋势 : The request failed: Google returned a response with code 429,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571317/
我是一名优秀的程序员,十分优秀!