Python爬虫urllib模块是什么

  介绍

本篇文章给大家分享的是有Python爬关虫urllib模块是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

在Python中有很多库可以用来抓取网页,其中内置了urllib模块,该模块就能实现我们基本的网页爬取。

在Python2。x和Python3。x中urllib模块是不一样的,但是用法上差不多,我们先用Python2。x中的urllib来实现一个demo。

在Python2。x中内置了urllib模块,但是Python创始人Guido van Rossum觉得其太臃肿了,于是又写了一个urllib2,两者有很多不同,最显著的如下:

(1) urllib仅可以接受URL,不能创建,设置头的请求类实例;

(2)但是urllib提供urlencode()方法用来得到查询字符串的产生,而urllib2则没有(这是urllib和urllib2经常一起使用的主要原因)

(3)编码工作使用urllib的urlencode()函数,帮我们讲重点:价值这样的键值对转换成“键=值”这样的字符串,解码工作可以使用urllib的结束()函数。

我们就使用urllib2来实现一个简单的爬虫:

#,导入urllib2 库   import  urllib2   ,   #,向指定的网址发送请求,并返回服务器响应的类文件对象   时间=response  urllib2.urlopen (“http://www.baidu.com")   #,类文件对象支持,文件对象的操作方法,如阅读()方法读取文件全部内容,返回字符串   时间=html  response.read () .decode (“utf-8")   #,打印字符串   打印(html)

在上面的代码中我们其实就相当于模拟了查看百度首页,然后获取百度首页的html内容。

urllib2在python3。x中被改为urllib.request python2。x的urllib和urllib2在python3。x中合并为urllib。

在Python3。x中实现上面的代码如下:

#,导入urllib 库   import  urllib.request    #,向指定的网址发送请求,并返回服务器响应的类文件对象   时间=response  urllib.request.urlopen (“http://www.baidu.com")   #,类文件对象支持,文件对象的操作方法,如阅读()方法读取文件全部内容,返回字符串   时间=html  response.read () .decode (“utf-8")   #,打印字符串   打印(html)

最终的打印结果如下,内容太长就截一小段:

历史的车轮滚滚而来,虽然大部分Python使用者还在使用Python2。x,但Python3。x肯定有其之长才被发布的,本人作为小白,就选取Python3。x学习吧。

在我们上面的例子中,urlopen()的参数就是一个url地址;

但是如果需要执行更复杂的操作,比如增加HTTP报头,必须创建一个请求实例来作为urlopen()的参数,而需要访问的url地址则作为请求实例的参数。

#,导入urllib 库   import  urllib.request   ,   #,url 作为请求()方法的参数,构造并返回一个请求对象   时间=request  urllib.request.Request (“http://www.baidu.com")   #,请求对象作为urlopen()方法的参数,发送给服务器并接收响应   时间=response  urllib.request.urlopen(请求)   #,类文件对象支持,文件对象的操作方法,如阅读()方法读取文件全部内容,返回字符串   时间=html  response.read () .decode (“utf-8")   #,打印字符串   打印(html)

最终的打印结果一致。

新请求建实例,除了必须要有url参数之外,还可以设置另外两个参数:

数据(默认空):是伴随url提交的数据(比如要发布的数据),同时HTTP请求将从“GET"方式改为“POST"方式。

头(默认空):是一个字典,包含了需要发送的HTTP报头的键值对。

这两个参数下面会说到。

但是这样直接用urllib给一个网站发送请求的话,确实略有些唐突了,就好,比人家每家都有门,你以一个路人的身份直接闯进去显然不是很礼貌。而且有一些站点不喜欢被程序(非人为访问)访问,有可能会拒绝你的访问请求。

但是如果我们用一个合法的身份去请求别人网站,显然人家就是欢迎的,所以我们就应该给我们的这个代码加上一个身份,就是所谓的用户代理头。

浏览器就是互联网世界上公认被允许的身份,如果我们希望我们的爬虫程序更像一个真实用户,那我们第一步,就是需要伪装成一个被公认的浏览器。用不同的浏览器在发送请求的时候,会有不同的用户代理头。

现在我们就来加一个用户代理的报头。

当我们打开https://www.baidu.com/,我们在开发者工具的网络下,我们会找到一个,

Python爬虫urllib模块是什么