网络连接有风险,异常处理很重要
理解 Requests库的异常:
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
r.raise_for_status() | 如果不是200,产生异常requests.HTTPError |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
后面两种有区别
爬取网页的通用代码框架:
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() #如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__ == "__main__":
url = "http://www.baidu.com"
print(getHTMLText(url))
这样一个通用代码框架可以有效地处理我们在访问或爬取网页过程中,可能出现的一些错误,或者是网络不稳定造成的一些现象。
通用代码框架使用户访问或爬取网页变得更有效、更稳定、更可靠。
参考资料:Python网络爬虫与信息提取(北京理工大学慕课)