python - 使用请求 python 在谷歌上进行简单查询时出现错误 429

标签 python python-3.x selenium-webdriver python-requests

我正在尝试通过 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/

相关文章:

python - 为什么 .png 文件不能使用 Python 脚本下载,而它适用于其他图像类型?

python - “NoneType”对象没有属性 'earlierDate_'

mysql - 如何计算组上的函数(作为聚合)

python - 自定义 python 对象的 pretty-print __str__

java - 我如何在 xpath 中搜索单词并返回所需的 WebElement?

python - session 未创建异常 : Message: session not created: This version of ChromeDriver only supports Chrome version 74 though Chrome v74 is installed

python - 使用 DispatcherMiddleware 实例组合 2 个 Flask 应用程序会导致第二个应用程序出现 404 错误

python - 我可以在不更改访问语法的情况下用 lambda 替换属性吗?

python - 我对用户输入的测试与一个输入正确匹配,但与其他输入不匹配

java - Selenium:登录后页面刷新