Python网络爬虫与信息提取-Day2-requests库(2)
来源:互联网 发布:建筑工程预算软件 编辑:程序博客网 时间:2024/05/29 03:19
HTTP协议
HTTP,Hypertext Transfer Protocol,超文本传输协议
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议
HTTP协议采用URL作为定位网络资源的标识,URL格式如下:
http://host[:port][path]
host: 合法的Internet主机域名或IP地址
port: 端口号,缺省端口为80
path: 请求资源的
HTTP URL实例:
http://www.bit.edu.cn
http://220.181.111.188/duty
HTTP URL的理解:
URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据
HTTP协议对资源的操作
GET 请求获取URL位置的资源
HEAD 请求获取URL位置资源的响应消息报告,即获得该资源的头POST请求向URL位置的资源后附加新的数据
PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容
DELETE 请求删除URL位置存储的
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
PATCH和PUT的区别
假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段
需求:用户修改了UserName,其他不变
• 采用PATCH,仅向URL提交UserName的局部更新请求
• 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除
PATCH的最主要好处:节省网络带宽
HTTP协议与Request库方法功能是一一对应的
1.head()方法
>>> import requests
>>> r = requests.head('http://httpbin.org/get')
>>> r.headers
{'Connection': 'keep-alive', 'Server': 'meinheld/0.6.1', 'Date': 'Tue, 22 Aug 2017 14:46:44 GMT', 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': 'true', 'X-Powered-By': 'Flask', 'X-Processed-Time': '0.000668048858643', 'Content-Length': '265', 'Via': '1.1 vegur'}
>>> r.text
''
用head方法去访问一个链接,用r.headers来反馈展示的头部信息的内容,试图展示它的全部内容时内容是空
所以head方法可以用很少的流量获取网络资源的概要信息
2.post()方法
使用post()方法向服务器提供新增数据
>>> import requests
>>> payload = {'key1':'value1','key2':'value2'}
>>> r = requests.post("http://httpbin.org/post",data=payload)
>>> print(r.text)
{
"args": {},
"data": "",
"files": {},
"form": {
"key1": "value1",
"key2": "value2"
},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "23",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"json": null,
"origin": "112.0.247.58",
"url": "http://httpbin.org/post"
}
我们发现它们被放到了form字段下,说明向URL POST一个字典,自动编码为form(表单)
如果我们不提交键值对而提交字符串,我们发现它被存到了data字段下
>>> r = requests.post("http://httpbin.org/post",data='ABC')
>>> print(r.text)
{
"args": {},
"data": "ABC",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Accept-Encoding": "gzip, deflate",
"Connection": "close",
"Content-Length": "3",
"Host": "httpbin.org",
"User-Agent": "python-requests/2.18.4"
},
"json": null,
"origin": "112.0.247.58",
"url": "http://httpbin.org/post"
}
所以,post()方法根据用户提交内容的不同,在服务器上会做数据的相关整理
3.put()
put()方法与post()类似,只不过它会把原有数据覆盖掉
- Python网络爬虫与信息提取-Day2-requests库(2)
- Python网络爬虫与信息提取(一) requests库
- Python网络爬虫与信息提取-Day1-requests库(1)
- Python网络爬虫与信息提取-Day3-requests库(3)
- Python网络爬虫与信息提取-Day5-Requests库网络爬取实战
- Python 网络爬虫与信息获取(一)—— requests 库的网络爬虫
- Python网络爬虫与信息提取(一)
- Python网络爬虫与信息提取-Day6-Beautiful Soup库
- Python网络爬虫与信息提取(二) BeautifulSoup库
- 【MOOC】Python网络爬虫与信息提取-北京理工大学-part 2
- Python网络爬虫与信息提取(中国大学mooc)
- [mooc]python网络爬虫与信息提取(实例一)
- Python网络爬虫与信息提取(一)
- Python网络爬虫与信息提取 网络爬虫之规则
- MOOC-Python网络爬虫与信息提取-第二周 BeautifulSoup库入门与信息提取方法
- Python网络爬虫与信息提取-Day12-Re(正则表达式)库入门
- Python网络爬虫与信息提取-Day10-(实例)中国大学排名定向爬虫
- Python网络爬虫与信息提取-Day13-(实例)淘宝商品比价定向爬虫
- 导入时如何定制spring-boot依赖项的版本
- 排序小结
- 基于Putty的远程登录操作Linux服务器的一些"套路"
- IEC 60335-1: 2001新标准的变化简介
- 堆和栈的区别(转过无数次的文章)
- Python网络爬虫与信息提取-Day2-requests库(2)
- MultiActionController,PropertiesMethodNameResolver,ParameterMethodNameResolver例子
- KMP小结
- git指令大全
- js实现全选功能
- hdu 6170 dp 2017 Multi-University Training Contest
- 斯坦福 机器学习-第四章学习理论
- 【HDU
- jQuery的入口函数