一、requests库的安装
1、安装命令 cmd以管理员身份运行打开,输入命令:pip install requests 回车即可 request查找网站:http://www.python-requests.org 2、检查是否安转成功,打开IDLE,输入import requests调用库,然后以防问百度主页为例子r=requests.get(“http://www.baidu.com”),然后查看它的状态码:r.status_code,状态码为200表示成功;可以更改它的编码为utf-8:r.encoding=‘utf-8’;打印网页信息r.text,这时可以看到百度的内容被成功抓取了。 3、requests库的7个主要方法
二、requests库的get()方法
最简单的方法:r = requests.get(url) 1、请求:通过get方法和url来构造一个向服务器请求资源的Request对象,这个对象是requests库内部生成的。 注意:python是大小写敏感的,这里的对象r是大写的 2、返回:Requests.get函数返回的内容用变量r来表示,这里的r是Response对象,Response对象返回的所有的相关资源。
3、requests完整的使用方法有3个参数 requests.get(url,params=None,**kwargs) url:拟获取页面的url链接 params:url中的额外参数,字典或字节流格式,可选 **kwargs:12个控制访问的参数,可选 4、get方法实际上使用了request的方法来封装,requests一共提供了7个常用方法,除了第一个request方法是基础方法外其他的6个方法都是通过调用request方法来实现的。 5、response对象
(1)r.headers返回get请求获得页面的头部信息 (2)type?查看r的类型 (3)Respsone对象 Response对象包含服务器返回的所有信息,同时也包含向服务器请求的request信息 (4)5个response访问网页最常用的和最必要的属性 (5)response对象的属性 (6)encoding和apparent_encoding的区别 r.encoding的编码方式是从HTTP header中的charset字段获得的,如果HTTP header中有这样一个字段说明我们访问的服务器对它资源的编码是有要求的,而这样的编码会获得回来,存在r.encoding中,但并不是所有的服务器对它的资源编码都是有相关要求,所以,如果header中不存在charset,则认为编码为ISO-8859-1,百度默认为ISO-8859-1编码。但是这样的编码并不能解析中文,所以requests库提供了另外一个备选编码:apparent_encoding,这个编码是根据http的内容部分,而不是头部分去分析内容中出现文本可能的编码形式,原则上说apparent_encoding的编码比encoding更加准确,因为encoding其实并没有解析内容,而是从header字段中提取编码;apparent_encoding根据网页内容分析出的编码方式。所以当我们用encoding不能正确解码返回内容时,可以用apparent_encoding来接出相关的编码信息。
三、requests的爬取网页的通用代码框架
1、requests库的异常 2、response返回网页的所有内容,它提供一个方法raise_for_status()专门与异常打交道的方法,它会判断返回的状态是不是200,如果是200则是正常的。 爬去网页的通用代码框架
import requests
>>> def getHTMLText(url):
try:
r = requests.get(url,timeour=30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
if _name_=="_main_":
url="http://www.baidu.com"
print(getHTMLText(url))
四、HTTP协议及requests库方法
HTTP(Hypertext Transfer Protocol)超文本传输协议,HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。HTTP协议采用URL作为定位网络资源的标识。 1、URL格式 http://host[:port][part] host:合法的Internet主机域名或IP地址 port:端口号,缺省端口为80 path:请求资源的路径 实例: http://www.bit.edu.cn http://220.181.111.188/duty HTTP URL的理解: URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源 2、HTTP协议对资源的操作 3、HTTP协议对资源的操作 云端上存储的所有资源,它实际上用URL来做相关的描述,也叫标识,获取资源的时候可以用GET或HEAD方法,GET方法获得全部资源,HEAD方法获得资源的头部信息;如果我们想把自己的资源方法URL上,可以使用PUT、post、PATYCH、删除用delete。事实上HTTP协议通过URL对资源做定位,通过这6个方法对资源进行操作,每一次操作都是独立无状态的,这次的操作跟下次的操作并没有关系。在HTTP协议里,网络通道跟服务器我都是黑盒子,它能看到的就是URL链接和url的相关的操作。 1)理解PATCH和PUT的区别: (1)假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段。 (2)需求:用户修改了UserName,其他不变 (3)采用PATCH,仅向URL提交UserName的局部更新请求。 (4)采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除 (5)PATCH的最主要好处:节省网络带宽 4、HTTP协议与Requests库
|