- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用非官方 Google Trends API ( https://github.com/GeneralMills/pytrends#trend ) 编写代码,但是在几乎 10 个请求之后,我收到以下错误:超出了 Google 的速率限制。请使用 time.sleep() 来间隔请求。
以下命令似乎无法正确连接到 Google 服务。
pytrends = TrendReq(google_username, google_password, custom_useragent=None)
因此,我尝试更改我的 IP 地址以及 Tor 浏览器,如下所述:https://stackoverflow.com/a/34516846/7110706
controller = Controller.from_port(port=9151)
def connectTor():
socks.setdefaultproxy(socks.PROXY_TYPE_SOCKS5 , "127.0.0.1", 9150, True)
socket.socket = socks.socksocket
def renew_tor():
controller.authenticate()
controller.signal(Signal.NEWNYM)
def showmyip():
url = "http://www.showmyip.gr/"
r = requests.Session()
page = r.get(url)
soup = BeautifulSoup(page.content, "lxml")
ip_address = soup.find("span",{"class":"ip_address"}).text.strip()
print('New IP adress is:' + ip_address)
主要问题在于以下代码:
def requestDailydatafromGT(keywords, geography, date): #parameters must be strings
from pytrends.request import TrendReq
import time
from random import randint
google_username = "" #put your gmail account
google_password = ""
path = ""
#Connect to google
pytrend = TrendReq(google_username, google_password, custom_useragent=None)
requestdate=str(date)+' 3m'
trend_payload = {'q': keywords,'hl': 'en-US','geo': geography, 'date': requestdate} #define parameters of the request
mes=0
while mes==0:
try:
results= pytrend.trend(trend_payload, return_type='dataframe').sort_index(axis=0, ascending=False) #launch request in Google tren0ds
mes=1
except Exception:
renew_tor()
connectTor()
time.sleep(randint(5,15))
mes=0
return results
随着 IP 地址随时间变化,代码似乎可以正常工作,但我仍然遇到 Google 请求配额限制错误:
Exceeded Google's Rate Limit. Please use time.sleep() to space requests.
New IP address is : 178.217.187.39
Exceeded Google's Rate Limit. Please use time.sleep() to space requests.
New IP address is: 95.128.43.164
你知道有没有办法绕过这个限制?也许 Google 趋势无法获取新的 IP 地址,因为 thor 未正确路由请求。
提前致谢。
最佳答案
您是否已尝试在 while 循环内(重新)连接到 Google?
while mes == 0:
pytrend = TrendReq(google_username, google_password, custom_useragent=None) # Connect to google
try:
results = pytrend.trend(trend_payload, return_type='dataframe').sort_index(axis=0, ascending=False) # Launch request in Google Trends
mes = 1
更新1:正如OP告诉我的,我的解决方案仅在使用随机用户代理时才有效。
因此类似下面的代码应该可以工作:
def random_word(length):
"""Return a random word of 'length' letters."""
return ''.join(random.choice(string.ascii_letters) for i in range(length))
[...]
def requestDailydatafromGT(keywords, geography, date): #parameters must be strings
[...]
while mes == 0:
pytrend = TrendReq(google_username, google_password, custom_useragent=random_word(8)) # Connect to Google
try:
results = pytrend.trend(trend_payload, return_type='dataframe').sort_index(axis=0, ascending=False) # Launch request in Google Trends
mes = 1
[...]
更新 2:每次续订 Tor 时无需进行身份验证。您只需在 Controller 创建后执行一次即可。
controller = Controller.from_port(port=9051)
controller.authenticate(<YOUR_TOR_CONTROL_PASSWORD>)
作为附加信息,标准端口应该是:
托尔:9050 | Tor 控制:9051
Tor 浏览器:9150 | Tor 浏览器控制:9151
在默认 Tor 配置文件中取消注释“ControlPort 9051”(并添加我的散列密码)后,我使用了 9050 和 9051 端口。
关于python - Google 趋势 - 配额限制 - IP 地址更改器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40406458/
在文档中我们可以找到 The limits are based on a moving window that tracks the number of requests you send per h
我试图了解使用 Windows Azure 托管 Web 服务的正确方法。在阅读了一些可用的文档后,我已经达到以下几行: Windows Azure takes the following actio
我正在运行 GitLab Community Edition并希望为 GitLab 项目(存储库)添加配额,以防止用户创建大型项目。 配额应以最大项目大小为单位,例如每个项目 420 MB。这可能吗?
我已经通过 jersey 框架构建了 Web 服务 API。现在我想限制每个客户的配额。例如: - 一个客户一天只能发出少于10000个请求。 - 一个客户端每秒只能发出少于 10 个请求。等等等等。
我们使用免费 API 制作简单的 501C3 map 。通常我们的地理编码使用率很低,但我们所做的更改 [oops] 触发了所有 >2500 条记录的重新请求。 我们可以等待 24 小时“超时”。 我
我们知道任何人或任何公司都向我们提供了许多 API 来开发我们的应用程序。其中一些需要订阅并为您提供访问 token 或 key 等。您可以使用这些 key 访问和使用这些 API,这些 key 使他
在 google chrome 中 indexedDB 的配额限制是什么?不知何故,似乎很少有人提到这一点。我可以像在 Firefox 中一样使用无限配额并获得用户许可吗? 最佳答案 Unlimite
是否有关于如何处理 sql azure 配额限制的最佳实践?也许某种自动增加? 最佳答案 您可以使用以下查询确定该层的大小限制: SELECT Edition = DATABASEPROPERTYEX
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题?通过 editing this post 添加详细信息并澄清问题. 1年前关闭。 Improve this
我尝试将 nodeJS 中的视频插入 Youtube,但出现此错误: { errors: [ { domain: 'youtube.quota', reason: 'quotaExceeded', m
我们将 API 帐户从免费更新为付费,但它不允许我们增加配额。我的理解是如果我去的话应该有一个选择APIs & auth --> APIs --> 选择 API --> Quota,但没有。 有人可以
Version 3 of the YouTube Data API has concrete quota numbers listed in the Google API Console where
对于这个特定问题,我发现了几个相关问题,但 Google 团队没有给出明确的答案: 写入 BigQuery 的 Cloud DataFlow 作业是否限制为每表每秒 10 万行的 BigQuery 配
据我了解(给定 this previous question 和 the Google Maps API docs ),攻击者似乎可以用完另一个站点的配额。 例如,假设我运行一个网络应用“Find T
我正在使用 pubnub Java SDK 3.7.2。我只使用免费计划。当我不停地发布一堆消息时,经常会出现以下错误。但我每 200-300 毫秒发布一条消息,错误不会发生。发布间隔有限制吗? [E
我尝试在 GCP 中购买额外的 promise 使用折扣,但出现此错误。 Quota 'COMMITTED_CPUS' exceeded. Limit: 75.0 in region asia-sou
我有一个应用程序,它使用 youtube-data-API 来分析视频描述中的一些数据。我想从我的应用程序中及时检查我的配额使用情况。 最佳答案 您可以从 Google 控制台检查您的配额,方法是转到
我正在本地开发一个应用程序,我只是集成了 Youtube data api v3 来查询视频。 昨晚我收到 403 错误,说我的每日配额已超出。如果我查看开发者控制台中配额下的图表,它说昨天有 10,
是否可以为 azure 应用服务可以使用的 CPU 和 RAM 使用量设置配额(或限制)? 假设我有一个应用服务计划 plan-one 和在该计划上运行的两个应用服务:A 和 B。我可以以某种方式说
我正在寻找一种使用client-go来获取 namespace 资源配额的方法,类似于kubectl describe ns my-namespace-name。 我已经尝试过ns, err := k
我是一名优秀的程序员,十分优秀!