您的位置: 首页 > 新闻资讯 > 正文

Python爬虫request库出现问题如何解决?

发布时间:2019-11-11 14:52:39 来源:

使用python爬虫的时候,遇到requests库出现异常情况要怎么处理?如果你是爬虫新手,那么,就来看看黑洞代理给你整理的教程吧。


Python爬虫request库出现问题如何解决?


1、Requests异常情况

在进行网络访问时,经常会遇到各种错误的情况发生,Requests库的主要异常情况如下:

requests.URLRequired URL缺失异常

requests.TooManyRedirects 超过最大重定向次数,产生重定向异常

requests.Connection 网络连接错误异常,如DNS查询失败、拒绝连接等

requests.Timeout 请求URL超时,产生超时异常

requests.HTTPError HTTP错误异常

requests.ConnectTimeout 连接远程服务器超时异常

在Requests库中所有Requests显式抛出的异常都继承自 requests.exceptions.RequestException 。

2、Requests异常处理

当我们无论是get/post请求后赋值给response变量,response返回所有内容或者抛出异常,同时在response对象还提供一个方法——

response.raise_for_status(),其作用是当访问网页后的HTTP状态码不是200时,产生requests.HTTPError。基于此,就不用判断很多种状态码不为200情况了,在大批量爬取网页内容时,只要出现HTTPError异常,直接记录或者跳过,爬完所有数据后在进行处理。

3、异常处理小例子

在这里举几个例子,构造几个url链接,分别模拟错误地址、连接远程服务器超时等2种异常情况。

# -*- coding: utf-8 -*-

"""

Created on Tue Apr 16 23:08:21 2019

@author: www.lizenghai.com

"""

import requests

urls = ['http://www.lizenghai.com',

'http://www.lizenghai.com/404',

'http://www.lizenghai.comXX/']

for i,u in enumerate(urls):

print(u)

timeout = 3

if i ==0:

# 这里只对第一个url(正确的url)进行超时测试

# 在千分之一秒内肯定无法完成连接的,所以会报超时的错误。

timeout = 0.001

try:

response = requests.get(u, timeout=timeout)

response.raise_for_status() # 检查http状态码是否为200

except requests.ConnectTimeout:

print('超时!')

except requests.HTTPError:

print('http状态码非200')

except Exception as e:

print('未进行容错处理的情况:', e)

执行上述例子,将返回如下结果:

http://www.lizenghai.com

超时!

http://www.lizenghai.com/404

http状态码非200

http://www.lizenghai.comXX/

未进行容错处理的情况: HTTPConnectionPool(host=’www.lizenghai.comxx’, port=80): Max retries exceeded with url: / (Caused by NewConnectionError(‘<urllib3.connection.HTTPConnection object at 0x00000000096FB5F8>: Failed to establish a new connection: [Errno 11004] getaddrinfo failed’))

在上面,黑洞代理给大家介绍了request库可能会出现的错误类型,以及解决方式,希望能够在各位用户使用的时候派上帮助。


相关文章内容简介

1 Python爬虫request库出现问题如何解决?

  使用python爬虫的时候,遇到requests库出现异常情况要怎么处理?如果你是爬虫新手,那么,就来看看黑洞代理给你整理的教程吧。  1、Requests异常情况  在进行网络访问时,经常会遇到各种错误的情况发生,Requests库的主要异常情况如下:  requests.URLRequired∵URL缺失异常  requests.TooManyRedirects∵超过最大重定向次数,产生重定向异常  requests.Connectio... [阅读全文]