[python爬虫]我的第一个爬虫程序(1)

下载网页:

想要爬取网页,我们需要做的第一件事就是把这个网页下载下来,接下来演示的是通过requests模块来进行网页的下载:

import requests

def download(url):
    print('downloading:', url)
    html = requests.get(url)
    return html

在这里我们可以给出一个更加完整的版本,我们在这个函数增加了一个新的功能,那就是当我们的请求出现遇到异常时,我们的函数会捕获到异常,打印出出现的错误代码,并且返回None:

import requests

def download(url):
    print('downloading:', url)
    html = requests.get(url)
    if html.status_code != requests.codes.ok:
        e = html.status_code
        print('Download error:', e)
        html = None
    return html

1.反复下载:
在这里,我们可以通过给返回的错误进行分类来反复提交请求,直到能够成功下载到网页的内容,同时我们也需要定义一下网页的尝试次数,以免进入无线循环的条件之中,有一点我们需要知道的是什么情况之下我们有必要重新下载网页什么情况下没有必要: 当错误代码为4xx的时候,是请求存在问题,而5XX的时候则是发生在服务端的问题(有可能是服务器的过载等等),所以我们只需要确保错误代买为5XX重试下载即可:

import requests

def download(url, num_retries = 2):
    print('downloading:', url)
    html = requests.get(url)
    if html.status_code != requests.codes.ok:
        e = html.status_code
        print('Download error:', e)
        html = None
        if num_retries > 0:
            if 500 <= e < 600:
                return download(url, num_retries-1)
    return html

我们可以尝试调用函数

>>>download('http://httpbin.org/status/500')

那么它打印出来的结果便是:

downloading: http://httpbin.org/status/500
Download error: 500
downloading: http://httpbin.org/status/500
Download error: 500
downloading: http://httpbin.org/status/500
Download error: 500

成功!

Leave a Reply

Your email address will not be published. Required fields are marked *