为什么我这么早就收到 HTTPError 429?

问题描述 投票:0回答:1

我正在使用 Python 中谷歌库的

search()
函数进行谷歌搜索。然而,即使我只进行了两次搜索,我也会立即收到 HTTPError 429 Too Many Requests。为什么我这么早就收到这个错误?这是我的代码:

try:
    from googlesearch import search
except ImportError:
    print("No module named 'google' found")
from fake_useragent import UserAgent

class ProductSearch():
    def __init__(self, retail_domain, product_key):
        self.retail_domain = retail_domain
        self.product_key = product_key

    def google_search(self, user_agent="",keys = None):
        if keys == None:
            keys = self.product_key

        links = []
        not_found_keys = []

        for key in keys:
            query = 'site:' + self.retail_domain + ' \"' + key + '\"'
            for j in search(query.replace('+',' '), num=1, stop=10, pause=2, user_agent=user_agent):
                if(j != None):
                    links.append(j)
                else:
                    links.append(None)
                    not_found_keys.append(key)

        return links, not_found_keys

ua = UserAgent()
test = ProductSearch('https://www.emag.ro', ['FDDV-213F', 'RSL 75640 SS', 'FTTM-93FWH', 'FSD-VRR315BLF+', 'GDN18860FHXN'])
useragent = ua.random 
query_result = test.google_search(useragent)
links = query_result[0]
not_found_keys = query_result[1]
for link in links:
    print(link)
print(not_found_keys)
python google-search http-error
1个回答
0
投票

HTTP 错误 429 Too Many Requests 是一个服务器响应,表明您已经超过给定时间段内允许的请求数。当用户或应用程序在短时间内向服务器发送过多请求时,通常会返回此错误。

在您的情况下,服务器可能会阻止您的 IP 地址或用户代理,因为它收到了太多来自它的请求。即使您只进行了两次搜索,也会发生这种情况,因为服务器可能对每分钟或每小时的请求数设置了限制。

要解决此问题,您可以尝试使用不同的 IP 地址(也许是 VPN)或用户代理来发出您的请求。您还可以尝试减少每分钟或每小时发出的请求数。此外,您可以在每次请求后在代码中添加睡眠函数以延迟请求并避免触发速率限制。例如,您可以尝试将搜索功能中的“暂停”参数更改为更大的值,例如 5 或 10。希望这对您有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.