gpt4 book ai didi

python - 在 Python 3 (urllib) 中打印 http 状态代码

转载 作者:行者123 更新时间:2023-12-05 08:19:02 25 4
gpt4 key购买 nike

我正在尝试获取包括 3XX 在内的 http 状态代码,但无法从我的代码中打印出来。

代码如下:

import urllib
import urllib.request
import urllib.error

urls = ['http://hotdot.pro/en/404/', 'http://www.google.com', 'http://www.yandex.ru', 'http://www.python.org', 'http://www.voidspace.org.uk']
fh = open("example.txt", "a")
def getUrl(urls):
for url in urls:
try:
with urllib.request.urlopen(url) as response:
requrl = url
the_page = response.code
fh.write("%d, %s\n" % (int(the_page), str(requrl)))
except (urllib.error.HTTPError, urllib.error.URLError) as e:
requrl = url
print (e.code)
fh.write("%d, %s\n" % (int(e.code), str(requrl)))
getUrl(urls)

有人可以帮我解决这个问题吗?

最佳答案

并非所有 URLError 类的错误都有一个代码,有些只有一个原因

此外,捕获 URLErrorHTTPError 在同一个 except block 中不是一个好主意(见 docs ):

def getUrl(urls):
for url in urls:
try:
with urllib.request.urlopen(url) as response:
log(fh, response.code, url)
except urllib.error.HTTPError as e:
log(fh, e.code, url)
except urllib.error.URLError as e:
if hasattr(e, 'reason'):
log(fh, e.reason, url)
elif hasattr(e, 'code'):
log(fh, e.code, url)

def log(fh, item, url):
print(item)
fh.write("%s, %s\n" % (item, url))

关于python - 在 Python 3 (urllib) 中打印 http 状态代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37779795/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com