前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >爬虫必备库‘requests’详解(二)

爬虫必备库‘requests’详解(二)

作者头像
企鹅号小编
发布2018-02-27 09:57:21
6260
发布2018-02-27 09:57:21
举报
文章被收录于专栏:企鹅号快讯企鹅号快讯

今日分享:requests库详解

上一篇文章爬虫必备库‘requests’主要说了下Pytohn第三方库--Requests库的安装与简单测试,今天详细介绍Requests库的部分知识点,这些都是编写爬虫时经常用到的,虽然不是Requests库的全部内容,但是完全能够满足爬虫的需要。此外,相关要点的讲解会根据实例来进行说明,便于大家理解。

Requests库有七个主要的方法:

requests.request() #构造一个请求,支撑以下各方法的基础方法;requests.get() #获取HTML网页的主要方法,对应于HTTP的GET;requests.head() #获取HTML网页头信息的方法,对应于HTTP的HEAD;requests.post() #向HTML网页提交POST请求的方法,对应于HTTP的POST;requests.put() #向HTML网页提交PUT请求的方法,对应于HTTP的PUT;requests.patch() #向HTML网页提交局部修改请求,对应于HTTP的PATCH;requests.delete() #向HTML页面提交删除请求,对应于HTTP的DELETE

而在编程中我们经常用到的就是requests.get()方法,细心地读者会发现上一篇文章中有用到 r = requests.get(url) 这句代码,其中等号右侧内容是想服务器发送一个该网页的请求,然后左侧是服务器返回的一个包含相应网页资源的Response(返回对象,可单纯理解为该网页资源包,这种说法有点不严谨),实质上,Response对象具有很多属性,看下面这个栗子:

>>> import requests

#在使用某一库时,必须对其进行导入,导入方法见历史文章

#这就是要爬去的url,可以提前赋值给某变量

>>> r = requests.get(url)

#想服务器提交请求,服务器返回response

>>> r.status_code

200

#这是response的一个状态码属性,表示HTTP的返回状态,返回200则表示连接成功,可以进行爬取,若返回404或者其他的数字,则表示未成功,需要对代码进行技术处理,否则不能爬取。

>>>r.content

#这是HTTP相应内容的二进制形式,不利于理解。

#这是HTTP相应内容的字符串形式,是通过编码方式转码后输出的内容,通常是通过utf-8编码方式进行转码,利于我们理解。

>>> r.encoding

'ISO-8859-1'

#这个是从HTTP头部信息猜测的url所用的编码方式,如果按上面的这个编码方式进行输出文本,会发现看不懂(也就是我们经常说的乱码,其实是用了一种我们不能理解的编码方式)。

#因此,我们在进行编程时,往往会这样处理 r.encoding = r.apparent_encoding(也可写为utf-8) ,这样处理后,URL的编码方式将会转变会右侧的方式(utf-8编码方式),此时输出的文本就能为我们所理解了。

大家可以尝试以上两种编码方式输出上面示例的 r.text ,你会发现不一样。

代码的编写完进行运行时,总是会出现各种异常,在使用requests库时也会发生异常,比如上面提到的连接失败异常,此外还有 requests.HTTPError HTTP错误异常,requests.URLRequired URL缺失异常,requests.Timeout 请求URL超时,产生超时异常等等各种异常。于是requests库给出了一种综合的异常处理方法(r.raise_for_status())来解决response异常,这种方法是在其内部进行处理的方法,但凡发生上一段中说到的每一种异常,该处理方法就会引发异常,相应代码块就不在执行,或者执行提前编号的应对异常抛出的异常处理代码块,这一种方法的好处就是便于使用 try-except 方法进行异常处理。

以上主要是介绍了库中的requests.get() 方法,这是编写爬虫是使用最多的,至于其他的一些方法会在以后爬虫实战练习中提到,因为实在是用的比较少,此外小编也本着大家容易上手的目的来给大家讲解这些内容。

下面小编给大家一个爬取网页的通用代码框架,为了清晰明了,小编截图粘贴,获取源代码,请加群获取。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文来自企鹅号 - 全球大搜罗媒体

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档