很多小伙伴们在了解了爬虫的一个基础开发流程后大概有了一定的思路,想要实际上手的时候却发现想要获取网页都是一件困难的事情。因为在学习了 python 语言的标准课程中并没有介绍 python 如何访问网页,也没有介绍哪个库的功能是做这个的(大部分编程语言类课程不会过多介绍这个语言的包,除非这个包是学习必须的)。其实,在 python 中内置了一个模块专门用于操作网页 URL,以及对网页的内容进行一个简单的处理,这个模块,叫 urllib 库。
介绍
urllib 库是一个 python 自带的用于操作网页 URL 的库,它可以简单的对网页的内容进行抓取处理。该功能最常用于 python 爬虫的开发,不过对于爬虫开发而言,request 是一个更好的选择。但内置的 urllib 也可以在简单使用上替代 request 库(而且由于 urllib 库是内置的,所以并不需要额外安装)。
安装
urllib 是 python 内置的库,不需要额外的安装。
功能
urllib 库下有四个模块,分别是 request 模块,error 模块,parse 模块和 robotparser 模块。
-
urllib.request
该模块定义了一些打开URL的函数和类,比如发起请求,授权验证,重定向,cookie等功能。
urllib.request
的urlopen()
方法即可。urlopen()
方法可以选择传入如下参数(不完全,但是基本上是爬虫常用的参数): url
:url 地址,也就是请求的链接。 data
:发送到服务器的数据包(使用post方法的时候),默认为None。 timeout
:设置访问超时时间。 headers
:请求头,这个字段在爬虫反反爬的时候需要用到。 method
:请求方法,可以设置请求的方式,默认是get请求。
代码示例:
url = 'https://www.w3cschool.cn/'
headers = {
#假装自己是浏览器
'User-Agent':' Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',
}
req = request.Request(url,data=None,headers=headers,method='GET')
-
urllib.error
该模块为urllib.request
所引发的异常定义了异常类,用于处理urllib.request
引起的异常。
-
urllib.parse
该模块用于解析URL ,它可以解析一个url的协议,网络位置部分,分层路径,最后路径元素的参数,查询组件,片段识别,用户名,密码,主机名(小写)和端口号(前提是该URL有对应的值)
一般而言一个url的结构只要开发者有一定经验,可以直接看出上述的内容,所以该模块的作用只是用于自动化操作,对于爬虫而言作用有限(在最开始的网站分析阶段开发者已经将相应的工作都做完了),如需了解对应的内容,请前往python教程进行了解
urllib.robotparser
该模块用于解析robot文件。robot文件是网站用来告诉爬虫什么内容可以爬什么内容不能爬的文件,是网站与爬虫开发者之间的君子协定。虽然没有明文规定robot规定不能爬的内容一定不能爬,但是爬取robot规定不能爬的内容对方可以向开发者追责。
小结
以上就是关于 urllib 库的全部内容介绍了,关于这个库的类和方法的内容还有很多,小编只是挑了里面比较常用的一个功能进行介绍,更多的内容可以翻阅官方文档。W3Cschool后续也会整理相关的手册进行放出。