我正在尝试通过 Google 上的简单查询获得第一个非广告结果。
res = requests.get('https://www.google.com?q=' + query)
为查询分配任何值,您将得到一个错误。 我试图添加一些标题,但没有任何变化。
我已经尝试添加谷歌通常与查询相关联的所有其他参数,但同样没有任何变化。
如果您使用 selenium 进行搜索,则没有问题。
错误代码是 429,但这似乎只是对该查询的标准响应。它与我的 IP 无关,我也没有向 Google 发送垃圾邮件,并且这不会在一段时间后消失。
您知道为什么会发生这种情况吗,是否可以添加一些 header ,或者任何其他解决方案来查看结果,就像您在 google 上搜索该关键字一样?
最佳答案
429 请求过多
HTTP 429 Too Many Requests响应状态代码表示用户在给定时间内发送了太多请求(“速率限制”)。响应表示应该包括解释条件的详细信息,并且可以包括一个 Retry-After
header ,指示在发出新请求之前等待多长时间。
当服务器受到攻击或仅收到来自某一方的大量请求时,使用 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/search?q=' + query res = requests.get(url, headers=headers) print(res)
控制台输出:
<Response [200]>
You can find a relevant discussion in Failed to load resource: the server responded with a status of 429 (Too Many Requests) and 404 (Not Found) with ChromeDriver Chrome through Selenium
关于python - 使用请求 python 在谷歌上进行简单查询时出现错误 429,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56758333/