首页 > 技术文章 > 爬虫之urllib库的requests模块

niska 2021-06-28 19:34 原文

一 urllib库介绍

urllib库是Python内置的HTTP请求库,不需要外安装即可使用,它包含如下常用模块:

(1)urllib.request:最基本的HTTP请求模块,可以用来模拟发送请求,功能等同于在浏览器里输入网址然后回车。

(2)urllib.parse:一个工具模块,提供URL处理方法,比如拆分、解析、合并等。

(3)urllib.error:包含从 urllib.request发生的错误或异常 

(4)urllib.robotparser :用于解析robots.txt文件

 

二 urllib.request请求

1. urllib.request 基本用法

urllib.request 模块提供了最基本的构造 HTTP 请求的方法,利用它可以模拟浏览器的一个请求发起过程,同时它还带有处理 authenticaton (授权验证), redirections (重定向), cookies (浏览器Cookies)以及其它内容。

 

三 urllib.request.urlopen()函数

 urlopen() 函数可以完成最基本的简单网页的 GET 请求抓取,利用以上最基本的 urlopen() 方法,我们可以完成最基本的简单网页的 GET 请求抓取。

1 import urllib.request
2 response = urllib.request.urlopen('http://www.baidu.com')
3 print(response.read().decode())

 


如果我们想给链接传递一些参数该怎么实现呢?我们首先看一下 urlopen() 函数的API。

 

返回的是HTTPResposne类型的对象,该对象主要包含read()、readinto()、getheader(name)、getheaders()、fileno()等方法,以及msg、version、status、reason、debuglevel、closed等属性

得到这个对象之后,我们把它赋值为response变量,然后就可以调用这些方法和属性,得到返回结果的一系列信息了。例如,调用read()方法可以得到返回的网页内容,调用status属性可以得到返回结果的状态码,如200代表请求成功,404代表网页未找到等。

用法:response = urllib.request.urlopen('https://www.python.org')

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

 

四 其他常用函数

urllib.parse.quote()函数,用来对字符串编码,比如把原来不符合URL的字符转换为符合URL的ASCII码。

urllib.parse.urlencode()函数,用来对字典编码,比如把key-value这样的键值对转换成 a=1&b=2这样的字符串。

 

推荐阅读