我正在尝试通过Google上的简单查询获得第一个非广告结果。
res = requests.get('https://www.google.com?q=' + query)
分配任何值查询,您将得到一个错误。
我尝试添加一些标头,但没有任何变化。
我试图添加所有Google通常关联到查询的所有其他参数,但再次没有任何变化。
如果您使用硒进行搜索没有问题。
错误代码为429,但这似乎只是此查询的标准响应。这与我的IP无关,我也不是向Google发送垃圾邮件,而且这种情况在一段时间后不会消失。
您知道为什么会发生这种情况吗?是否可以添加一些标头,或者是否可以使用其他解决方案来仅查看结果,就像您在Google上搜索该关键字一样?
最佳答案
429请求太多
HTTP 429 Too Many Requests响应状态代码指示用户在给定的时间内发送了太多请求(“速率限制”)。响应表示应包含说明条件的详细信息,并且可以包含Retry-After
头,指示在发出新请求之前要等待多长时间。
当服务器受到攻击或仅从单方接收到大量请求时,以429
状态码响应每个请求都将占用资源。因此,不需要服务器使用429
状态代码。当限制资源使用时,仅断开连接或采取其他步骤可能更合适。
但是,当我使用您的代码并执行相同的测试时,得到的完美结果如下:
代码块:
import requests
query = "selenium"
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}
url = 'https://www.google.com?q=' + query
res = requests.get(url, headers=headers)
print(res)
控制台输出:
<Response [200]>
您可以在Failed to load resource: the server responded with a status of 429 (Too Many Requests) and 404 (Not Found) with ChromeDriver Chrome through Selenium中找到相关的讨论