Python爬虫进阶之如何使用urllib库

  介绍

这篇文章主要介绍了Python爬虫进阶之如何使用urllib库,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获、下面让小编带着大家一起了解一下。

Python的数据类型有哪些吗?

python的数据类型:1。数字类型,包括int(整型),长(长整型)和浮子(浮点型)。2。字符串,分别是str类型和unicode类型。3。布尔型,Python布尔类型也是用于逻辑运算,有两个值:True(真)和虚假的(假)。4。列表,列表是Python中使用最频繁的数据类型,集合中可以放任何数据类型。5。元组,元组用“()”标识,内部元素用逗号隔开。6。字,字典典是一种键值对的集合。7。集合,集合是一个无序的,不重复的数据组合。

python爬虫因其效率高开发迅速的优势受到广大程序员的青睐,python爬虫的使用依赖于本身各种库的功能,其中urllib库是python中的一个http请求库,含有四个模块,有着不同的功能,使用方法也有很多,本文向大家介绍urllib库的四个模块和四种使用方法:1,获取某个网站的方式;2、超时处理;3,简单解析——响应头;4,将爬虫伪装成服务器发出请求。

<强>一、urllib库是什么?

urllib是python中的一个http请求库,借助urllib,我们可以向浏览器发出请求,只需向urllib库中的方法传入url和一些参数即可。

<强> urllib库中包含以下模块:

<强> 1,urllib.request

http请求模块,用于模拟向浏览器发出请求的过程,

<强> 2,urllib.error

异常处理模块,当利用urllib.request模拟向浏览器发出请求时,如果出现请求错误,可以利用此模块捕获异常信息,然后进行重试或其他操作,以保证程序不会意外终止;

<强> 3,urllib.parse

包含了针对url的许多处理方法,如url拆分,url解析,url合并等;

<强> 4,urllib.robotparser

robots . txt解析模块,主要用于识别网站的robots . txt文件,判断哪些网站可以爬,那些网站不可爬。此模块不太经常被使用。

<强>二,python爬虫中常用的urllib方法

首先需要导入urllib模块,如下

 import  urllib.request
  import  urllib.parse , #,解析器,将键值对按utf - 8或其他形式解析

<强> 1,获取某个网站的方式

<强>(1)获取一个得到请求

 response =, urllib.request.urlopen (“http://www.baidu.com")
  打印(response.read () .decode (“utf-8")),,,
  #,第二行的输出是对获取到的对象回应的信息,网页源码进行utf - 8的解码

<强>(2)获取姿势请求

 data =,字节(urllib.parse.urlencode ({“hello":“world"}),,编码=& # 39;utf - 8 # 39;),,
  #,一般模拟用户登录时使用此种方式,在{}内加上饼干内容
  时间=response  urllib.request.urlopen (“https://baidu.com",, data=https://www.yisu.com/zixun/data)
  打印(response.read () .decode (“utf - 8”)) 

采用post访问时需要传递表单信息,通过表单的封装才能访问,代码中字节将信息转换为二进制包。

当需要模拟浏览器发出请求时,必须用柱形式来封装数据(用数据封装),否则有405报的错。

<强> 2,超时处理

当要访问的服务器排斥爬虫,或链接是死链接,网络不好等情况出现时,页面在一定的时间内会没有反应,这时可以设置一个时间限制,避免一直等待。

 response =, urllib.request.urlopen (“https://baidu.com",,超时=0.1)
  打印(response.read () .decode (“utf-8")) 

若访问超时会出现如下报的错,可以利用异常处理结束循环或者停止爬取该网页,向其他网页发送得到请求。

<>之前尝试:   ,,,response =, urllib.request.urlopen (“http://www.baidu.com",超时=0.1)   ,,,print (response.read () .decode (“utf-8"))   except  urllib.error.URLError  as  e:   ,,,印刷(“time  !“)

<强> 3,简单解析——响应头

网络爬虫有时会返回一些错误信息,此时我们可以返回响应状态码来大致判断报错类型。

 response =, urllib.request.urlopen (“http://www.baidu.com")
  打印(response.status),,, #,返回状态码-200404418等
  print (response.getheaders()),, #,返回头部所有信息

常见的状态码如418报的错是因为访问的服务器发现该请求是一个爬虫,也即爬虫时常见的反爬机制,此时可改库用请求,添加头信息等方法解决。

<强> 4,将爬虫伪装成服务器发出请求

 #,访问反爬的网址
  时间=url “http://www.douban.com"
  headers =, {
  “User-Agent":“Mozilla/5.0, (Windows  NT  10.0;, Win64;, x64), AppleWebKit/537.36, (KHTML, like 壁虎),
  Chrome/83.0.4103.61  Safari/537.36“
  }
  req =, urllib.request.Request (url=url,标题=头,方法=癙OST"),, #,要求的是请求对象而非响应对象
  时间=response  urllib.request.urlopen(要求)
  时间=html  response.read () .decode (“utf-8")
  打印(html) 

Python爬虫进阶之如何使用urllib库