![d8ab0c5af2a8fc719f017329f3eae2fe.png](https://i-blog.csdnimg.cn/blog_migrate/edc8a66040a8bcf8e9790a65b3fd4916.jpeg)
一、 request库的安装
在命令行输入pip install requests进行安装
![a50087206ade67b4b8aeb582019eb8fd.png](https://i-blog.csdnimg.cn/blog_migrate/ad85acf8743bec4c11c599b0c22f935c.png)
随后进行调用,发现成功
二、 request库的最常用方法:get 方法
r= request.get(url)包括两个(对象)请求,其中一个为request请求,即向服务器请求资源的request对象,以及Response请求,即包含从服务器返回的所有资源
完整标准格式:request.get(url,params=None,**kwargs)
其中,url为获取页面的链接,params为额外参数,字典或者字节流格式,其为可选。**kwargs为12个控制访问的参数。
Response对象:
![b172dbd8558518b09de124f968ee5ef1.png](https://i-blog.csdnimg.cn/blog_migrate/b2b0861fdf75071dc0fbc66f58d6d380.png)
访问百度主页,状态码为200,即表示正常。类型为response。也包括了我们请求的request信息。
![4a890c01ed04c3e82c74977840529e14.png](https://i-blog.csdnimg.cn/blog_migrate/dd7669da87d68b2d8973802ff0194026.jpeg)
可修改r.encoding的格式,而不使用其本身自定义的格式:
![5a5abbe7d002e3f4169d17732af3bcee.png](https://i-blog.csdnimg.cn/blog_migrate/2f614228db7db147f3ab08b762b83295.png)
如果header中不存在charset字段,则默认编码为ISO-8859—1,encoding并未分析内容,但是apparent_encoding分析了其中的内容。
三、 爬取网页的通用代码框架
![00093fea442500b5a7b64baf1074b479.png](https://i-blog.csdnimg.cn/blog_migrate/7feb1e1c7b84bd7043e5c3a2d299d969.png)
def getHTMLText(url):
try:
r=requests.get(url,timeout=30) #得到网页,设定时间
r.raise_for_status()#如果状态不是200,引发HTTPError异常
r.encoding=r.apparent_encoding#替代,使得返回网页的内容是正确的
return r.text
except;
return “产生异常”
ps. If __name__==”__main__”的含义
![548828fe28d89bf0a1926f84aab32ac9.png](https://i-blog.csdnimg.cn/blog_migrate/024a860e1c61d8280d87b97f473be394.png)
四、 HTTP 协议和request库的主要方法
Hypertext Transfer Protocol,超文本传输协议。
基于“请求和相应”模式的、无状态的应用层协议。
即用户发起请求,进行相应。无状态即表示第一次响应和第二次响应之间没有关系。
url为作为定位网络资源的标识,格式http://host[:post][path]
host为合法的主机域名或者ip地址
post端口号,path为路径。
![185703601d0b9ceb44569ec39040a15f.png](https://i-blog.csdnimg.cn/blog_migrate/c6d24048753b003de2090dadd6fb538c.png)
![abef6d6de6ade796da04b69aa41a5d2d.png](https://i-blog.csdnimg.cn/blog_migrate/d91e58f28c52c08b3253a1e169bab576.png)
注:理解patch和put的区别:
假设url位置有一组数据,包括name、id等。
采用patch,仅向url提交name的局部更新申请(节省网络带宽)
采用put,必须将所有的20个字段一并提交到url,未提交字段将会被删除。
Head方法即为展示头部内容,用较少流量获取资源
Post,键值对默认存于表单。若提交data,则存于data。
五、 request主要方法解析
requests.request(method,url,**kwargs)
method即为包括get,head,post,put,patch,delete,options(获取和客户端打交道的参数)
**kwargs访问控制的参数,均为可选项。
1、Params:(修改)字典或字节序列,作为参数(键值对)增加到url中
![acf693695569772d289c30af6a281092.png](https://i-blog.csdnimg.cn/blog_migrate/eb0d9413053b77610b398f68c7bee40e.png)
2、Data:字典、字节序列或文件对象,作为request内容
存到链接下,并不是直接存到url里面
3、json 作为request内容
4、headers字典、HTTP定制头。头字段
![c929f0188880a8ba3d952a1208f2a70f.png](https://i-blog.csdnimg.cn/blog_migrate/5dca8ea3281e48c1e1e155252a07c70b.png)
模拟浏览器、
5、cookies 从HTTP解读字典格式
6、auth字段,元组类型,支持HTTP认证
7、files 字典类型,传输文件:
![97d86166b83b77814e8cc57b4b9fbe47.png](https://i-blog.csdnimg.cn/blog_migrate/0444b8a4fc8426ff9c7a6036b61b3867.png)
向链接提交文件
8、timeout 时间内未返回产生timeout
9、proxies:字典类型,设定访问服务器,增加登录认证:
举例:
![8631dc7be369a06f2eb65858da0b2dbf.png](https://i-blog.csdnimg.cn/blog_migrate/0375296fb42c81a7a5d13e6a7eabd0cb.png)
即,使用第一行的用户名,以及第二行的IP地址进行访问