首页 > 编程问答 >即使第一次发出请求,Pytends API 也会抛出 429 错误

即使第一次发出请求,Pytends API 也会抛出 429 错误

时间:2024-07-25 06:43:04浏览次数:7  
标签:python google-trends http-status-code-429

我正在使用非常简单的代码按区域查找关键字的数据。但每次我运行它时,它都会给我429错误,提示发出了太多请求,但实际上该请求是第一次发出,以前从未发出过。下面提到了我收到的错误。

引发异常。TooManyRequestsError.from_response(response) pytrends.exceptions.TooManyRequestsError:请求失败:Google 返回了代码 429 的响应

这是代码,我正在运行。

import pandas as pd                        
from pytrends.request import TrendReq

pytrend = TrendReq()
kw_list = ["Blockchain"]
pytrend.build_payload(kw_list, cat=0, timeframe='today 12-m', geo='', gprop='')
# Interest by Region
df = pytrend.interest_by_region()
df.head(10)

错误代码 429 "请求过多" 表示在短时间内向 Google Trends API 发送的请求过多。虽然你可能认为这是你的第一个请求,但你的代码中可能存在一些隐藏原因,导致 Google 认为请求过多。

以下是导致此问题的一些可能原因及相应的解决方案:

1. IP 地址限制速率: Google Trends API 有针对每个 IP 地址的速率限制。如果你在共享网络(如办公室或学校网络)上运行代码,其他人可能也在使用 Google Trends API,这可能导致你的 IP 地址被限制速率。

解决方案:

  • 尝试使用不同的网络: 尝试使用其他网络(例如,你的手机热点)来查看问题是否仍然存在。
  • 联系 Google Trends API 支持: 如果问题仍然存在,你可以联系 Google Trends API 支持,请求提高你的速率限制。

2. 缺少用户代理: 如果没有设置用户代理,Google 可能会将你的请求识别为来自机器人的请求,并限制其速率。

解决方案:

  • 在你的代码中设置用户代理: 在创建 TrendReq 对象时设置用户代理。例如:
pytrend = TrendReq(hl='en-US', tz=360, user_agent='My User Agent') 

3. 代码循环或迭代: 检查你的代码中是否有任何循环或迭代,这些循环或迭代可能会在短时间内发送多个请求。

解决方案:

  • 在请求之间添加延迟: 如果你需要在循环中发送多个请求,请在每个请求之间添加延迟,以避免触发速率限制。例如:
import time

for keyword in kw_list:
    pytrend.build_payload([keyword], cat=0, timeframe='today 12-m', geo='', gprop='')
    df = pytrend.interest_by_region()
    print(df.head(10))
    time.sleep(5) # 在每个请求之间等待 5 秒

4. Pytrends 库版本过时: 过时的 Pytrends 版本可能会导致与 Google Trends API 的兼容性问题,从而导致 429 错误。

解决方案:

  • 将 Pytrends 更新到最新版本:
pip install --upgrade pytrends

通过实现上述解决方案,你应该能够解决 Pytrends 中的 429 错误并成功检索 Google Trends 数据。

标签:python,google-trends,http-status-code-429
From: 75744524

相关文章

  • 使用 python Flask 发送邮件中的图像
    我想发送一封包含html代码和图像的电子邮件但在gmail中它说图像已附加,我不想要这样,我只想要电子邮件正文中的图像。html_content=f"<imgsrc="cid:banner"alt=""style="width:80%;">"msg=MIMEMultipart('related')html_part=MIMEText(html_c......
  • 在 python requests modul 中,如何检查页面是否使用“POST”方法或“GET”方法
    如何使用python“requests”模块检查页面是否使用“GET”方法或“POST”方法。我期望输出为True或False,或者GET或Post预期代码:importrequestsurl=f"www.get_example.com"response=requests.get(url)ifresponse.check_get==True:print("get")你......
  • VS Code Python - 如果括号(括号、大括号等)未关闭,内联建议不起作用
    我遇到的问题是,当我在未闭合的括号或方括号“内部”开始变量名称时,VSCode将不会显示任何建议。但是,如果在键入变量名称之前闭合括号,则建议效果很好。如果我可以避免它,我宁愿不将自动完成括号关闭设置为True也不使用TabOut扩展。第一个屏幕截图显示建议在闭括号/方......
  • 在 Azure 上部署代码时使用 Python 的多处理模块是否有意义?
    我们的团队在Azure机器学习(AML)上部署了一个Python脚本来处理存储在Azure存储帐户上的文件。我们的管道由一个ForEach活动组成,该活动调用每个或列出的文件的Python脚本。从Azure数据工厂(ADF)运行它会触发多个单独的管道同时运行......
  • 我已成功安装 pypdf2 但无法将其导入到我的 python 文件中
    我已经成功安装了pypdf2模块,但在导入它时,我发现该模块丢失了。我尝试使用fromPyPDF2importPdfReader导入,但它不起作用此问题的各种解决方案是什么?在尝试导入PyPDF2时遇到问题。以下是可能导致此问题的一些常见原因和解决方案:安......
  • Python3打开图片时请求ConnectionResetError(10054)
    我试图从'http://xxx.jpg'之类的网站下载图片。代码:headers={'user-agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/66.0.3359.139Safari/537.36'}url='http://xxx.jpg'resp......
  • Jupyter Notebook 环境中的 Python 版本不匹配
    我遇到Jupyter笔记本启动横幅中报告的Python版本与我在笔记本中查询python--version时显示的版本之间的差异。启动横幅指示Python3.11.9,但是当我运行!python--version时,它返回Python3.11.7。我所做的步骤:basecondahas3.11.7versio......
  • Python XML 解析:字符串中的“<”被阻塞
    我有一个使用ET.XMLParser来解析CppCheckXML报告文件的Python模块。当尝试解析字符串中包含“<”的XML元素中的属性之一时,它会令人窒息,它会将其解释为格式错误的XML,例如:<errormsg="Includefile<iostream>notfound.">(注意字符和“iostream”之间的空格必须放......
  • 任意几行代码要成为Python中的函数需要什么?
    我正在上一门计算机科学课,我的任务是创建一个程序来实现一个带有参数的函数。我的老师告诉我,下面的代码不是一个函数,这让我很困惑,对于将某些代码行归类为“函数”所需的条件,我感到很困惑。defgame(numbers,max_turns,pfl,tgl):turns=0flag=Falseprint("You......
  • 如何使用 Python 创建新的 Azure 订阅?
    我正在尝试使用PythonSDK以编程方式创建新的Azure订阅。我发现的对AzurePythonSDK的唯一引用是这个这是我最终得到的结果:importazure.mgmt.billingimportazure.mgmt.subscriptioncreds=AzureCliCredential()client_name='test'defcreat......