爬取网页的通用代码框架
理解Resquests库的异常
在我们进行网络爬虫时常会出现错误,比如requests.ConnectionError;requests.HTTPError等,下面对Resquests库的异常做个总结:
异常 | 说明 |
---|---|
request.ConnectionError | 网络连接异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequierd | URL确实异常 |
requests.TooManyRedirects | 超出最大定向次数,产生定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
理解了异常过后我们就可以讲解下一个异常判断的方法,即
异常 | 说明 |
---|---|
r.raise_for_status() | 如果不是200,产生异常request.ConnectionError |
可进行判断,常用,如果是200,则返回200,如果不是200则返回错误原因
爬取网页的通用代码框架
在进行requests错误判断时常用try except 的方法进行判断,历程如下:
impotr requests
def get_text(url):
try:
r = requests.get(url,timeout = 30)
r.raise_for_status()#如果状态不是200引发HTTPError异常
r.enconding = r.apparent_enconding
return r.text
excep:
return "产生异常"
if __name__ == "__main__":
url = "http://www.baidu.com"
print(get_text(url))
get_text(url)函数内的语句即为代码框架即:
def get_text(url):
try:
r = resquests.get(url,timeout = 30)
r.raise_for_status()#如果状态不是200引发HTTPError异常
r.enconding = r.apparent_enconding
return r.text
excep:
return "产生异常"
通用代码框架讲解
代码工作过程讲解:
首先进行requests.get(url)进而调用r.raise_for_status()的方法来判断返回的状态是不是200,否则就会引发一个HTTPError异常。
第三行代码用r.apparent_enconding得到的编码方式赋值给r.enconding 来确保我们的解码方式是正确的,如果全部正确则返回r.text
如果网络连接出现错误就会通过try except来return一个异常信息。
这样一个通用爬虫框架可有效处理我们在处理或爬取网页时的错误。
**作用:**为了使你的爬取过程变得更加稳定可靠,这就是通用代码框架的作用。
以上即是本文的全部内容,如果你觉得本文对你的学习有帮助,你可以点击关注进行持续学习,我的爬虫的博客也会进行持续的更新,谢谢大家!
提示学习来源:北京理工大学慕课