【问题标题】:Python request yields status code 500 even though the website is available即使网站可用,Python 请求也会产生状态码 500
【发布时间】:2021-01-31 20:02:19
【问题描述】:

我正在尝试使用 Python 检查网站列表是否在线。但是,在几个站点上,请求会产生错误的状态代码。例如,我得到的https://signaturehound.com/ 的状态码是 500,即使网站在线并且在 Chrome 开发者工具中显示了响应码 200。

我的代码如下:

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

def url_ok(url):

   r = requests.head(url,timeout=5,allow_redirects=True,headers=headers)
   status_code = r.status_code

   return status_code

print(url_ok("https://signaturehound.com/"))

【问题讨论】:

  • 可能该网站不支持head 请求,使用get 可以正常工作。
  • 我收到错误代码 500
  • @WasifHasan 我也是,当我尝试.get 时,我得到了200 状态码
  • @CaptainDaVinci 有时解决方案可以非常简单。非常感谢!换头去get对我有用。
  • @JakobGreenfeld 如果您找到了解决方案,我建议您发布您的解决方案作为此问题的答案,以便稍后查看此帖子的人可以快速找到答案。

标签: python python-requests


【解决方案1】:

根据 cmets 中 @CaptainDaVinci 的建议,解决方案是将代码中的 head 替换为 get

import requests
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36'}

def url_ok(url):

   r = requests.get(url,timeout=5,allow_redirects=True,headers=headers)
   status_code = r.status_code

   return status_code

print(url_ok("https://signaturehound.com/"))

【讨论】:

    猜你喜欢
    • 2021-02-12
    • 1970-01-01
    • 2023-04-06
    • 2015-04-22
    • 2020-10-15
    • 1970-01-01
    • 2020-05-29
    • 2019-05-01
    • 2019-11-27
    相关资源
    最近更新 更多