我正在使用非官方的 Google 趋势 API ( https://github.com/GeneralMills/pytrends#trend ) 编写代码,但是在几乎 10 个请求之后,我收到以下错误:Exceeded Google's Rate Limit. Please use time.sleep() to space requests.
以下命令似乎没有正确连接到 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 请求配额限制错误:
超出了 Google 的速率限制。请使用 time.sleep() 空间请求。
新 IP 地址为:178.217.187.39
超出了 Google 的速率限制。请使用 time.sleep() 空间请求。
新 IP 地址为:95.128.43.164
你知道是否有办法绕过限制吗?也许 Google 趋势没有获得新的 IP 地址,因为请求没有被 thor 正确路由。
提前致谢。