python 爬虫源代码-python 爬虫-1:下载网页源代码

参考书籍:《用 Python 写网络爬虫》

当然你也可以自己百度搜索下载。

一点感想

书看一遍是不够的,温故而知新。

下载一个网页源代码

最简单的形式

使用的是 python 自带的库 urllib2

import urllib2

def download(url):

print "downloading " , url

html = urllib2.urlopen(url).read()

return html

给定想要下载的 URL 即可下载其源代码。

添加处理异常的功能

当然很有可能在下载的过程中出现各种问题,导致出现问题,所以需要在上面的程序上扩展,处理异常的情况。

import urllib2

def download(url):

print "downloading " , url

try:

html = urllib2.urlopen(url).read()

except urllib2.URLErrors as e:

print "download error: " , e.reason

html = None

return html

完整的程序如下:

# _*_ encoding:utf-8 _*_

'''

Created on 2017年8月4日

@author: wangs0622

'''

import urllib2

def download(url):

print "downloading " , url

try:

html = urllib2.urlopen(url).read()

except urllib2.URLError as e:

print "download error: " , e.reason

html = None

return html

if __name__ == '__main__':

download('http://www.wangs0622.com/dex')

运行的结果如下:

downloading http://www.wangs0622.com/dex

download error: Not Found

添加重试下载功能

有的时候,下载出现了问题,可能是但是网络不好的原因,也有可能是页面不存在的原因,一般会返回 4xx 和 5xx 类型的错误代码。 最常见的莫过于 404,即表示网页未找到。(为什么网页为找到,使用的是 404 代码呢? 据说是有历史原因的,有兴趣的话可以去百度。)

正常情况下,返回 5xx 错误代码的话,是因为网络的原因,并不是网页不存在,这个时候,我们可以尝试重新下载这个网页,所以,就有了如下的改进版本。

import urllib2

def download(url, num_retries = 5):

'''

function: 下载网页源代码,如果遇到 5xx 错误状态,则继续尝试下载,知道下载 5 次为止。

'''

print "downloading " , url

try:

html = urllib2.urlopen(url).read()

except urllib2.URLError as e:

print "download error: " , e.reason

html = None

if num_retries > 0:

if hasattr(e,'code') and 500 <= e.code < 600:

return download(url, num_retries-1)

return html

一个有用的网站

小结

截止目前的 download() 函数已经具备健全的下载网页源代码的功能,可以应付一般情况下的使用了。

后面还需要介绍为 download() 函数添加代理和下载延时功能,之后再介绍 链接爬虫。我想法是在介绍这些功能的同时我们实践爬取一个网站。相信学爬虫的都是广大男士,后面实践爬取的网站是:http://www.mm131.com 我们的目标是将其中的图片下载下来。

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2022 CSDN 皮肤主题:1024 设计师:白松林 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值