关于爬虫访问页面异常的获取:
HTTPError 和 URLError的区别:
前者是后者的一个子类,所以在捕获异常是要把HTTPError写在URLError的前面。
附加一个常见的http状态码及其对应状态:
https://blog.csdn.net/qq_40806970/article/details/100532946?ops_request_misc=%7B%22request%5Fid%22%3A%22158235425319724846422933%22%2C%22scm%22%3A%2220140713.130056874…%22%7D&request_id=158235425319724846422933&biz_id=0&utm_source=distribute.pc_search_result.none-task
import urllib.error
import urllib.request
req = urllib.request.Request('https://www.ooxx-fish.com')
###方法一
try:
response = urllib.request.urlopen(req)
except urllib.error.HTTPError as e:
print(e.code, '\n', e.reason, '\n', e.headers)
except urllib.error.URLError as e:
print(e.reason)
else:
print('Request successfully')
###方法二
try:
response = urllib.request.urlopen(req)
except urllib.error.URLError as e:
if hasattr(e,'reason'):
print('We failed to reach a server.')
print('Reason:',e.reason)
elif hasattr(e,'code'):
print('The server couldn\`t fulfill the request.')
print('Error code:',e.reason)
Python hasattr() 函数是python的一个内置函数。
描述
hasattr() 函数用于判断对象是否包含对应的属性。
语法
hasattr 语法:
hasattr(object, name)
参数
object – 对象。
name – 字符串,属性名。
返回值
如果对象有该属性返回 True,否则返回 False。
实例
class Coordinate:
x = 10
y = -5
z = 0
point1 = Coordinate()
print(hasattr(point1, 'x'))
print(hasattr(point1, 'y'))
print(hasattr(point1, 'z'))
print(hasattr(point1, 'no')) # 没有该属性
输出结果:
True
True
True
False