Google Translation API id 因请求过多而阻止 IP 地址

2024-01-30

我正在设置一个Django从 API 请求产品数据的视图,使用以下命令解析它们BeautifulSoup,应用googletrans模块并将响应保存到我的 Postgresql 数据库中。

昨天一切都工作正常,直到突然,Google 阻止了对我的 IP 地址的访问,因为一次请求太多。

我刚刚打开 LTE 来更改 IP 地址,结果成功了。

但现在,为了确保该 IP 地址不会再次发生这种情况,我需要找到一种方法来调用googletrans批量 API 或任何其他可以防止我再次被阻止的解决方案。

这是我的观点:

from bs4 import BeautifulSoup
from googletrans import Translator
import requests
import json


def api_data(request):
    if request.GET.get('mybtn'):  # to improve, == 'something':
        resp_1 = requests.get(
            "https://www.headout.com/api/public/v1/product/listing/list-by/city?language=fr&cityCode=PARIS&limit=5000&currencyCode=CAD",
            headers={
                "Headout-Auth": HEADOUT_PRODUCTION_API_KEY
            })
        resp_1_data = resp_1.json()
        base_url_2 = "https://www.headout.com/api/public/v1/product/get/"

        translator = Translator()

        for item in resp_1_data['items']:
            print('translating item {}'.format(item['id']))
            # concat ID to the URL string
            url = '{}{}'.format(base_url_2, item['id'] + '?language=fr')

            # make the HTTP request
            resp_2 = requests.get(
                url,
                headers={
                    "Headout-Auth": HEADOUT_PRODUCTION_API_KEY
                })
            resp_2_data = resp_2.json()

            descriptiontxt = resp_2_data['contentListHtml'][0]['html'][0:2040] + ' ...'

            #Parsing work
            soup = BeautifulSoup(descriptiontxt, 'lxml')
            parsed = soup.find('p').text

            #Translation doesn't work
            translation = translator.translate(parsed, dest='fr')

            titlename = item['name']
            titlefr = translator.translate(titlename, dest='fr')

            destinationname = item['city']['name']
            destinationfr = translator.translate(destinationname, dest='fr')

            Product.objects.get_or_create(
                title=titlefr.text,
                destination=destinationfr.text,
                description=translation.text,
                link=item['canonicalUrl'],
                image=item['image']['url']
            )

    return render(request, "form.html")

如何批量调用Google翻译API?或者还有其他解决方案吗?

请帮忙。

EDIT

基于@ddor254我应该把以下内容放在哪里:time.sleep(2)?

这是我出来的,可以吗?

  Product.objects.get_or_create(
      title=titlefr.text,
      destination=destinationfr.text,
      description=translation.text,
      link=item['canonicalUrl'],
      image=item['image']['url']
  )time.sleep(2) #here

或者像这样:

resp_1 = requests.get(
            "https://www.headout.com/api/public/v1/product/listing/list-by/city?language=fr&cityCode=PARIS&limit=5000&currencyCode=CAD",
            headers={
                "Headout-Auth": HEADOUT_PRODUCTION_API_KEY
            }, time.sleep(2)) #here

只是想确保在冒着这个新 IP 也被屏蔽的风险之前这样做是正确的。


我建议你阅读 MDN 上的这篇文章:https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429

如果这是您得到的响应,请尝试查看标题Retry-After在响应对象中。

因此,使用该标头的值添加睡眠或其他延迟方法可能会解决您的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google Translation API id 因请求过多而阻止 IP 地址 的相关文章

随机推荐

  • Git Stash 上的 Git PathSpec 问题

    当我运行新版本时2 13 0 windows 1其新命令stash p pathspec as git stash p AB Dir1 Dir2 DestinationHierarchyCreator cs 它报告错误 错误 路径规范 AB
  • 使用 Int64 进行位移位

    Int64 变量需要移位 我正在从数据库文件解析伪数学函数 变量是 uint32 或 int32 所以我确实将它们放入 Int64 中以平等地处理它们 而不会丢失任何内容 在我的一个树节点中 我需要对 Int64 进行位移位 不幸的是 移位
  • Python,用PIL画一个圆

    我正在寻找一个命令 可以使用 PIL 在现有图像上绘制一个圆圈 im Image open path 我想要一个可以绘制半径为彩色的圆圈的函数r和中心 x y image Image open x png draw ImageDraw Dr
  • 如何对非常大的 CSV 文件进行排序?

    我有一个 294 000 行的大型 csv 其中第 1 列中包含 url 第 2 列中包含数字 我需要将它们从最小数到最大数排序 我已将其加载到 CSVed 软件中 它可以正常处理 不会崩溃或发生任何问题 但是当我单击列顶部对其进行排序时
  • 如何为 google colab 创建视频设备?

    我试图在 google collab 上使用 pygame 创建一个简单的游戏 但在执行代码 pygame display set mode 时 我收到错误 没有可用的视频设备 那么我该如何解决呢 您可以通过告诉 SDL 使用虚拟驱动程序来
  • 脚本在 PyCharm 中运行,但不是从命令行运行

    当我尝试从 PyCharm IDE 运行我的程序时 一切正常 但如果我输入 Fedora python myScript py 在 shell 提示符中 我从模块 1 中收到导入错误 ImportError No modue named m
  • 使用 Spring MVC 的 ResponseEntity 返回流

    我有一个 Spring MVC 方法 它返回一个ResponseEntity 根据检索到的具体数据 有时需要返回一个数据流给用户 有时它会返回流以外的其他内容 有时还会返回重定向 我绝对希望这是一个流而不是字节数组 因为它可能很大 目前 我
  • 如何在设备上部署aab文件?

    在我的 Android 应用程序中 如果我想更新 APK 文件 我会使用以下命令 adb install r some my apk 好的 是工作 现在我签署了我的捆绑包 结果是 Android Studio 3 5 产生 AAB Andr
  • 在 Javascript 中获取派生构造函数的名称

    在下面的示例中是否可以获取派生 类 的名称 我想以某种方式让输出为 ChildClass 但它是 ParentClass function ParentClass this name Bob function ChildClass this
  • 如何修复错误“无法解析列...”

    我正在开发基于 Spring Framework MySQL JPA 的 Java Web 应用程序 当我尝试将数据从 HTML 表单持久化到 SQL 数据库时遇到问题 然后我尝试调试和修复 我在用IntelliJ IDEA 旗舰版 201
  • 动作过滤器的 ASP.NET MVC 测试

    如何为操作过滤器编写测试用例 我正在使用表单身份验证 我有用 RequiresAuthentication 操作过滤器装饰的基本控制器 当我执行控制器的测试用例时 我没有从 cookie 中获取登录用户的数据 我正在使用起订量 它是否提供了
  • 如何使 System.in 输入流读取 utf-8 字符?

    这是我的代码 public class MyTestClass public static void main String args throws Exception Scanner scanner new Scanner System
  • 自动缩进换行文本

    这里有点菜鸟 但我基本上希望文本在换行时自动缩进 所以而不是 Peter piper picked a peck of pickled peppers 这将是 Peter piper picked a peck of pickled pep
  • 将一个值分解为两个幂的结果

    是否有可能获得作为 2 的幂的结果形成一个值的整数 Example 129 resolves 1 128 77 resolves 1 4 8 64 我已经考虑过使用 Math log 并使用按位比较器执行 foreach 还有其他更漂亮的解
  • 如何在 Geany 中调试 C?

    我已经用谷歌搜索过它 但我得到的每个结果都说 从插件管理器添加调试器插件 但没有任何调试器插件的选项 我怎么解决这个问题 我用的是Ubuntu Geany 插件管理器仅列出已安装插件 尽管有这个名称 但您实际上无法从插件管理器安装插件 只能
  • Firefox 3.0 + 中的 SQLite 存储

    我有一个支持 Firefox 3 的 Firefox 扩展 SQLite 数据库对我的扩展很重要 我看见在 MDN 上 https developer mozilla org en StorageAPI 可能会发生变化并且它 解冻 我应该担
  • 使用创建图像共享 API 和 /ugcPosts 端点创建的帖子在我的时间轴上的 linkedin 上不可见

    我已经使用下面描述的创建图像共享 api 实现了在 linkedin 上共享图像帖子的所有三个步骤 但创建的帖子在我的 linkedin 提要 帖子或最近的活动中不可见 https learn microsoft com en us lin
  • 如何在不关闭当前Firebase会话的情况下创建用户身份验证[重复]

    这个问题在这里已经有答案了 我想创建一个系统 管理员可以从电子邮件创建用户身份验证 我已经按照文档所述进行了开发 但当前会话已关闭 我只想创建身份验证来获取 uid 然后使用我想要存储的数据在数据库中创建一个用户 这就是我所拥有的 var
  • Iframe 是否创建单独的执行上下文?

    我正在用 js 编写一个 html 解析器 它可以处理和操作很多节点 我想分摊开销 这样就不会导致用户界面冻结 我考虑过使用 web Worker 但它没有 DOM 访问权限 所以目前我正在使用setTimeout 0 在我的循环中不冻结
  • Google Translation API id 因请求过多而阻止 IP 地址

    我正在设置一个Django从 API 请求产品数据的视图 使用以下命令解析它们BeautifulSoup 应用googletrans模块并将响应保存到我的 Postgresql 数据库中 昨天一切都工作正常 直到突然 Google 阻止了对