python爬虫开发之urllib模块详细使用方法与实例全

1. urllib库简介

Python中,urllib库使用于对URL进行各种操作,例如:打开url,解析http/https/ftp协议、处理cookies、访问用户验证,处理代理等许多工作。urllib库包含了四个模块:

urllib.request:打开和读取URL(包括各种访问方式)的模块。其中最常使用的是urllib.request.urlopen()方法。下面就会详细介绍该方法的使用方法。

urllib.error:包含打开URL时,产生的各种错误信息异常处理模块。

urllib.parse:包含URL解析方法,例如:在HTTP_URL中,对用户名/密码进行编码;把参数表转换成字符串;从字符串中解析URL等等。

urllib.robotparser:用于处理robots.txt文件,它的作用是告知爬虫程序,哪些页面能抓取,哪些页面不能抓取。

2. urllib.request.urlopen方法详解

其中,最常使用的是urllib.request.urlopen()方法,用于打开URL,并可按照需要返回读取到的数据或者对数据进行操作。

下面是urllib.request.urlopen()的基本语法:

urllib.request.urlopen(url, data=None, [timeout,]*, cafile=None, capath=None, cadefault=False, context=None)

其中:

url是指定的URL,这可以是字符串,也可以是一个Request对象。

data是提交给该URL的数据,如果没有就填写 None。

timeout设置请求超时的时限,单位秒,默认是socket._GLOBAL_DEFAULT_TIMEOUT。

cafile是指定CA根证书文件,这次默认为None。

capath是指定CA证书目录。

cadefault是指示是否使用默认的CA证书,如果设为True,则使用默认的CA证书。

context是ssl.SSLContext类型的对象,用来指定SSL设置。

2.1 使用示例

下面的示例代码演示了如何使用urllib库来获取一个web页面,然后将html内容打印出来:

import urllib.request, urllib.error, urllib.parse

response = urllib.request.urlopen('http://www.goubanjia.com/free/index.shtml')

html = response.read()

print(html.decode('utf-8'))

在这个例子中,我们可以看到以下几点:

导入urllib模块。

使用urllib.request.urlopen()方法打开一个url。

使用response.read()方法读取该url的html内容。

使用print()函数打印该html内容。

3. urllib库的异常处理

在使用urllib库时,可能会遇到一些网络错误或服务器错误等异常,并附带相应的异常信息。因此,正确的网络编程应该包括异常处理机制。urllib的异常处理模块urllib.error,提供了处理urllib产生的异常的一些函数和类。

urllib.error中常见的异常类有以下几种:

URLError:是urllib.request.urlopen()方法产生的异常基类。

HTTPError:是产生与 HTTP 请求相关的异常。

ContentTooShortError:继承HTTPError,当下载的文件长度不符时抛出的异常。

3.1 使用示例

下面的示例代码演示了urllib库的异常处理:

import urllib.request, urllib.error

try:

urllib.request.urlopen("http://www.123.com/")

except urllib.error.URLError as e:

print(e.reason)

上面的代码执行结果会输出一个异常,因为我们访问的是一个不存在的页面,输出结果为:

Error 404 Not Found

4.实例:爬取网页数据并保存至本地文件

下面的示例代码演示了如何使用urllib库来获取网页数据,并将其保存至本地文件:

import urllib.request, urllib.error, urllib.parse

def create_txt_file(url, file):

response = urllib.request.urlopen(url)

webContent = response.read()

with open(file, 'w') as output:

output.write(str(webContent))

print("文件已成功创建: ")

print(file)

create_txt_file("http://www.baidu.com", "output.txt")

在这个例子中,我们可以看到以下几点:

使用urllib.request.urlopen()方法打开一个url。

使用response.read()方法读取该url的html内容。

使用with open() as output语句,将html内容保存到本地文件中。

5. 总结

本文介绍了urllib库的使用方法,主要涵盖了urllib.request.urlopen方法、异常处理以及利用urllib库爬取网页数据并保存至本地文件的实例演示。希望本篇文章能给初学者一些帮助,学习Python爬虫开发方面的技能。

后端开发标签