零基础写Python爬虫之HTTP异常处理
在进行Python爬虫开发时,最常见的问题就是因为网络不稳定导致请求失败。为了便于处理这些异常情况,我们需要掌握如何进行HTTP异常处理。
1. HTTP状态码
在进行HTTP异常处理时,首先需要了解HTTP状态码的含义,常见的HTTP状态码有:
- 200 OK:请求成功
- 301 Moved Permanently:永久性重定向到其他网址
- 302 Found:临时性重定向到其他网址
- 304 Not Modified:文档没有改变,可以使用缓存的版本
- 403 Forbidden:禁止访问
- 404 Not Found:未找到文件或者目录
- 500 Internal Server Error:服务器内部错误
- 503 Service Unavailable:服务不可用
2. HTTP异常处理的方法
在Python中,我们可以利用requests模块实现HTTP请求,同时也可以通过该模块进行HTTP异常处理。具体而言,可以利用try-except语句结构进行异常处理,如下所示:
import requests
url = 'https://www.example.com'
try:
response = requests.get(url)
response.raise_for_status()
# 若response的status_code不是200,则会抛出HTTPError异常
except requests.HTTPError as e:
print('HTTP异常:', e)
except requests.ConnectionError as e:
print('连接异常:', e)
except requests.Timeout as e:
print('超时异常:', e)
except requests.RequestException as e:
print('其他异常:', e)
else:
print('请求成功')
上述代码中,我们首先定义了一个url变量,然后使用requests.get()方法进行HTTP请求,并使用response.raise_for_status()方法检查返回的状态码是否正常(即是否为200)。如果状态码不正常,则会依次进入对应的异常处理分支中,分别处理HTTP异常、连接异常、超时异常以及其他异常。如果状态码正常,则执行try语句块下面的操作,即打印请求成功的消息。
3. 示例程序
下面提供两个有关HTTP异常处理的示例程序。
示例1:利用HTTP异常处理请求html页面
该程序用于请求指定的HTML页面,如果请求失败则会输出HTTP异常信息。
import requests
url = 'https://www.baidu.com/index.html'
try:
response = requests.get(url)
response.raise_for_status()
except requests.HTTPError as e:
print('HTTP异常:', e)
except requests.ConnectionError as e:
print('连接异常:', e)
except requests.Timeout as e:
print('超时异常:', e)
except requests.RequestException as e:
print('其他异常:', e)
else:
print(response.text)
示例2:利用HTTP异常处理请求API接口
该程序用于请求指定的API接口,如果请求失败则会输出HTTP异常信息。同时,该程序还演示了如何利用requests模块传递请求参数。
import requests
url = 'https://api.github.com/user/repos'
params = {'type': 'public'}
try:
response = requests.get(url, params=params)
response.raise_for_status()
except requests.HTTPError as e:
print('HTTP异常:', e)
except requests.ConnectionError as e:
print('连接异常:', e)
except requests.Timeout as e:
print('超时异常:', e)
except requests.RequestException as e:
print('其他异常:', e)
else:
repos = response.json()
for repo in repos:
print(repo['name'])
上述示例中,我们结合了API接口和请求参数的演示。在这个例子中,我们请求的是Github公开的API接口,请求参数中包含type参数,该参数值为public,表示获取公开的仓库列表。如果请求成功,则会输出所有公开的仓库名称。如果请求失败,则会输出HTTP异常信息。
总结
本文介绍了Python爬虫中常见的HTTP异常处理方法,包括HTTP状态码、HTTP异常处理的方法以及示例程序。在实际开发中,需要根据具体的情况选择合适的异常处理方法,以保证程序的稳定性和可靠性。