如何使用文件导入python请求以输出状态

2024-10-02 22:36:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我是Python(3)的新手,所以请不要抨击我:D

我使用下面的代码来导入一个包含不同URL的.txt文件,以便检查它们的状态代码。 在我的示例中,我添加了4个站点url

以下是import.txt,只有一个URL:

https://site1.site
https://site2.site
https://site3.site
https://site4.site
https://site5.site

虽然这是py脚本本身:

import requests
with open('import.txt', 'r') as f :
 for line in f :
  print(line)
#try :
 r = requests.get(line)
 print(r.status_code)
#except requests.ConnectionError :
#    print("failed to connect")

以下是回应:

https://site1.site

https://site2.site

https://site3.site

https://site4.site

https://site5.site

400

即使site3和site4是301,而site5有一个失败的连接响应,我只收到一个400响应,适用于所有提交的url

如果我使用下面的脚本为这些url中的每一个请求.head,那么我将收到正确的页面状态代码(下面的示例中为“永久移动”)。这是单个请求脚本:

import requests
try:
    r = requests.head("http://site3.net/")
    if r.status_code == 200:
        print('Success!')
    elif r.status_code == 301:
        print('Moved Permanently')
    elif r.status_code == 404:
        print('Not Found')
#    print(r.status_code)
except requests.ConnectionError:
    print("failed to connect")

What’s the best way to get an HTTP response code from a URL?致敬


Tags: 代码httpsimporttxt脚本urlstatussite
1条回答
网友
1楼 · 发布于 2024-10-02 22:36:20

requests.get()的调用在for循环之外,因此只执行一次。尝试缩进相关行,如下所示:

import requests
with open('import;txt', 'r') as f :
 for line in f :
  print(line)
#try :
  r = requests.get(line)
  print(r.status_code)
#except requests.ConnectionError :
#    print("failed to connect")

另外,我建议你使用4个空格的缩进。这样,这样的错误更容易发现

相关问题 更多 >