2019-08-09 Python网络爬虫与信息提取(2) HTTP协议及Requests库方法

HTTP协议

HTTP协议,即超文本传输协议(Hypertext transfer protocol)。
HTTP协议永远都是客户端发起请求,服务器回送响应

HTTP协议的主要特点可概括如下:
1、支持客户/服务器模式。支持基本认证和安全认证。
2、简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3、灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4、HTTP 0.9和1.0使用非持续连接:限制每次连接只处理一个请求,服务器处理完客户的请求,并收到客户的应答后,即断开连接。HTTP 1.1使用持续连接:不必为每个web对象创建一个新的连接,一个连接可以传送多个对象,采用这种方式可以节省传输时间。
5、无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。

HTTP协议是采用URL作为定位网络资源的标识。
URL格式: protocol :// hostname[:port] / path / [;parameters][?query]#fragment

名称 说明
protocol 协议,常用的协议是http
hostname 主机地址,可以是域名,也可以是IP地址
port 端口,http协议默认端口是:80端口,如果不写默认就是:80端口
path 路径,网络资源在服务器中的指定路径
parameter 参数,如果要向服务器传入参数,在这部分输入
query 查询字符串,如果需要从服务器那里查询内容,在这里编辑
fragment 片段,网页中可能会分为不同的片段,如果想访问网页后直接到达指定位置,可以在这部分设置

HTTP协议对于资源的操作

方法 说明
GET 请求获取URL位置的资源
HEAD 请求获取URL位置资源的响应消息报告,即获取该资源的头部信息
POST 请求向URL位置的资源后附加新的数据
PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE 请求删除URL位置存储的资源

我们可以把互联网当成一个云端,云端上存储的所有资源用URL作为描述/标识
HTTP通过URL对资源做定位,通过这6个方法对资源进行管理。
每次操作都是独立的。

理解patch 和 put的区别

假设URL位置有一组数据UserInfo,包括userId, userName, userGender等20个字段。
需求:在某个特别的页面里只能修改userName,其他不变

采用patch:仅向URL提供修改后userName。
采用put:必须将完整的20个字段提交到URL,做完整更新,未提交字段被删除,且浪费带宽。

HTTP协议与Response库

HTTP协议方法 Response库方法 功能一致性
GET requests.get() 一致
HEAD requests.head() 一致
POST requests.post() 一致
PUT requests.put() 一致
PATCH requests.patch() 一致
DELETE requests.delete() 一致
import requests
r = requests.head("http://httpbin.org/get") 
r.headers #获取该网页的头部信息
image.png
r.text #内容为空
image.png
##Requests库的post()方法
payload = {'key1':'value1','key2':'value2'}
r = requests.post('http://httpbin.org/post', data = payload) #向URL POST一个字典,自动编码为form(表单)
print(r.text)
2019-08-09 Python网络爬虫与信息提取(2) HTTP协议及Requests库方法_第1张图片
image.png
##Requests库的post()方法
r = requests.post('http://httpbin.org/post',data = 'ABC') #向URL POST一个字符串自动编码为data
print(r.text)
2019-08-09 Python网络爬虫与信息提取(2) HTTP协议及Requests库方法_第2张图片
image.png
##Requests库的put()方法
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.put('http://httpbin.org/put', data = payload)
print(r.text)
2019-08-09 Python网络爬虫与信息提取(2) HTTP协议及Requests库方法_第3张图片
image.png

你可能感兴趣的:(2019-08-09 Python网络爬虫与信息提取(2) HTTP协议及Requests库方法)