URLLIB 请求代码读取问题。无法读取错误代码 404
URLLIB request code reading issue. Cannot read error code 404
我正在尝试使用 URLLIB 读取 url 代码。这是我的代码:
import urllib
url = "https://www.facebook.com/fads0000fass"
r = urllib.request.urlopen(url)
p = r.code
if(p == "HTTP Error 404: Not Found" ):
print("hello")
else:
print("null")
我正在使用的 url 会显示错误代码 404,但我无法读取它。
我也试过 if(p == 404)
但我遇到了同样的问题。
我可以读取其他代码,例如 200、201 等。
你能帮我解决一下吗?
回溯:
Traceback (most recent call last):
File "gd.py", line 7, in <module>
r = urllib.request.urlopen(url)
File "/usr/lib64/python3.7/urllib/request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib64/python3.7/urllib/request.py", line 531, in open
response = meth(req, response)
File "/usr/lib64/python3.7/urllib/request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python3.7/urllib/request.py", line 569, in error
return self._call_chain(*args)
File "/usr/lib64/python3.7/urllib/request.py", line 503, in _call_chain
result = func(*args)
File "/usr/lib64/python3.7/urllib/request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found
我不确定你问的是什么。
import urllib.request
url = "https://www.facebook.com/fads0000fass"
try:
r = urllib.request.urlopen(url)
p = r.code
except urllib.error.HTTPError:
print("hello")
为了到达您的 if 语句,您的代码需要进行异常处理。当您在第 7 行调用 urlopen
时出现异常。请参阅回溯的第一步。
File "gd.py", line 7, in <module>
r = urllib.request.urlopen(url)
此处发生异常,导致您的代码退出,因此不会评估进一步的语句。要克服这个问题,您必须 handle the exception.
import urllib.request
url = "https://www.facebook.com/fads0000fass"
try:
r = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
# More useful
# print(f"{e.code}: {e.reason}\n\n{e.headers}")
if e.code in [404]:
print("hello")
else:
print("null")
除此之外,如果您想要更接近原始逻辑的东西,我建议您使用 requests 库。实际上,我建议尽可能使用请求来满足您的所有 HTTP 需求,这非常好。
import requests
r = requests.get(url)
p = r.status_code
if r.status_code == 404:
print("hello")
else:
print("null")
我正在尝试使用 URLLIB 读取 url 代码。这是我的代码:
import urllib
url = "https://www.facebook.com/fads0000fass"
r = urllib.request.urlopen(url)
p = r.code
if(p == "HTTP Error 404: Not Found" ):
print("hello")
else:
print("null")
我正在使用的 url 会显示错误代码 404,但我无法读取它。
我也试过 if(p == 404)
但我遇到了同样的问题。
我可以读取其他代码,例如 200、201 等。
你能帮我解决一下吗?
回溯:
Traceback (most recent call last):
File "gd.py", line 7, in <module>
r = urllib.request.urlopen(url)
File "/usr/lib64/python3.7/urllib/request.py", line 222, in urlopen
return opener.open(url, data, timeout)
File "/usr/lib64/python3.7/urllib/request.py", line 531, in open
response = meth(req, response)
File "/usr/lib64/python3.7/urllib/request.py", line 641, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib64/python3.7/urllib/request.py", line 569, in error
return self._call_chain(*args)
File "/usr/lib64/python3.7/urllib/request.py", line 503, in _call_chain
result = func(*args)
File "/usr/lib64/python3.7/urllib/request.py", line 649, in http_error_default
raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found
我不确定你问的是什么。
import urllib.request
url = "https://www.facebook.com/fads0000fass"
try:
r = urllib.request.urlopen(url)
p = r.code
except urllib.error.HTTPError:
print("hello")
为了到达您的 if 语句,您的代码需要进行异常处理。当您在第 7 行调用 urlopen
时出现异常。请参阅回溯的第一步。
File "gd.py", line 7, in <module>
r = urllib.request.urlopen(url)
此处发生异常,导致您的代码退出,因此不会评估进一步的语句。要克服这个问题,您必须 handle the exception.
import urllib.request
url = "https://www.facebook.com/fads0000fass"
try:
r = urllib.request.urlopen(url)
except urllib.error.HTTPError as e:
# More useful
# print(f"{e.code}: {e.reason}\n\n{e.headers}")
if e.code in [404]:
print("hello")
else:
print("null")
除此之外,如果您想要更接近原始逻辑的东西,我建议您使用 requests 库。实际上,我建议尽可能使用请求来满足您的所有 HTTP 需求,这非常好。
import requests
r = requests.get(url)
p = r.status_code
if r.status_code == 404:
print("hello")
else:
print("null")