gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 07:47:12 25 4
gpt4 key购买 nike

我正在设置一个 Django View ,该 View 从 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?或者有其他解决办法吗?

请帮忙。

编辑

基于@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

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

因此添加 sleep 或其他延迟方法以及该 header 的值可能会解决您的问题。

关于python - Google Translation API id 因请求过多而阻止 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56408383/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com