python爬虫——下载网页

本文介绍了Python爬虫中处理异常的方法,包括捕获异常以避免脚本退出,设置重试下载机制应对临时性服务器错误,以及如何设置用户代理以改善爬虫的网络交互。同时,讲解了HTTP状态码的分类,如1xx、2xx、3xx、4xx和5xx状态码的含义及其在爬虫实践中的应用。
摘要由CSDN通过智能技术生成

1、捕获异常

2、重试下载

3、设置用户代理

4、 HTTP 状态码的完整列表。

1、捕获异常

抓取网页前,需要将其下载下来。使用Python的urllib模块下载URL。

当传入URL参数时,该函数将会下载网页返回其HTML。

我们经常会遇到一些无法控制错误,urllib会抛出异常,然后退出脚本。

使用try--except, 捕获异常,并返回None

import urllib.request
from urllib.error import URLError,HTTPError,ContentTooShortError

def download(url):
    print('Downloading:',url)
    try:
        html = urllib.request.urlopen(url).read()
    except(URLError,HTTPError,ContentTooShortError) as e:
        print('Download error:', e.reason)
        html = None
    print(html)
    return html


url = 'https://www.baidu.com/'
download(url)

结果展示:

 

2、重试下

下载时遇到的错误经常是临时性的,比如服务器过载时返回的 503 Service Unavailable 错误。对于此类错误,在短暂等待后尝试重新下载,因为这个服务器问题现在可能已经解决。但如果服务器返回的是 404 Not Found这种错误,则说明该网页目前并不存在,再次尝试同样的请求一般也不会出现不同的结果。

当download函数遇到5XX错误码时,将会递归调用函数自身进行重试。

from urllib import request
from urllib import error


def download(url, num_retries=2):
    print('Downloading:', url)
    try:
        html = request.urlopen(url).read()
    except error.URLError as e:
        if hasattr(e, 'code'):
            print("HTTPError")
            print(e.code)
        elif hasattr(e, 'reason'):
            prin
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值