关于爬虫访问页面异常的获取

关于爬虫访问页面异常的获取:
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

你可能感兴趣的:(python)