Requests的基本使用
Requests库
r=requests.get(url)
#返回一个包含服务器资源的Response对象
#构造一个向服务器请求资源的Request对象
格式:requests.get(url,params=None,**kwargs)
- url 抓取页面的url连接
- params:url中的额外参数,字典或者字节流的格式
- **kwargs 12个访问控制参数
Response对象
import requests
r=requests.get("http://www.baidu.com")
print(r.status_code)#状态码 200 成功 别的失败
type(r)
r.headers
| 属性 | 说明 |
|---|---|
| r.status_code | 状态码,200成功,404失败 |
| r.text | url对应的页面的内容 |
| r.encoding | 编码方式 |
| r.apparent_encoding | 分析出的编码 |
| r.content | 相应内容二进制内容 |
流程

>>> import requests
>>> r=requests.get('http://www.baidu.com')
>>> r.status_code
200
>>> r.content
>>> r.encoding
'ISO-8859-1'
>>> r.apparent_encoding
'utf-8'
>>> r.encoding=r.apparent_encoding
>>> r.content
编码
r.encoding 猜测的编码方式
r.apparent_encoding 从内容分析出的编码方式
Request库的异常
| 异常 | 异常作用 |
|---|---|
| requests.ConnectionError | 网络连接异常 |
| requests.HTTPError | HTTP错误异常 |
| requests.URLRequired | URL缺失异常 |
| requests.TooManyRedirects | 重定向异常 |
| requests.ConnectTimeout | 连接服务器超时异常 |
| requests.Timeout | 请求URL超时异常 |
| r.raise_for_status() | 如果不是200,产生http异常 |
通用的代码
import requests
def getHTMLText(url):
try:
r=requests.get(url,timeout=20)
r.raise_for_status()
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
Requests库的七个主要方法
| 方法 | 说明 |
|---|---|
| requests.request() | 构建请求 |
| requests.get() | 获取html主要方法 |
| requests.head() | 获取头方法 |
| requests.post() | POST请求 |
| requests.put() | PUT请求 |
| requests.patch() | 局部修改 |
| requests.delete() | 删除请求 |
HTTP协议
超文本传输协议
用户发起请求,服务器给出回应,每次发出请求与请求之间互不影响
采用url来定位资源表示
URL格式:http://host[:port][path]
host:主机的域名或者IP的地址
port:端口号
path:请求资源的路径
URL存取的是网络上资源的路径,一个URL对应一个数据资源
HTTP协议对资源的操作
| 方法 | 说明 |
|---|---|
| GET | 获取位置资源 |
| HEAD | 获取头部信息 |
| POST | 请求向url位置资源之后添加新的信息 |
| PUT | 向url位置存储资源,覆盖url位置资源 |
| PATCH | 更新url位置的资源 |
| delete | 删除URL位置的资源 |

PATCH和PUT的区别
假设URL位置有一组数据UserInfo,包括UserID,UserName,等20个字段
采用PATCH,仅仅向URL提交UserName的局部更新要求
采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除
head()
r=requests.head(url)
r.headers
post()
payload={'key1':'value1','key2':'values'}
r=requests.post(url,data=payload)
print(r.text)
put()
payload={'key1':'value1','key2':'value2'}
r=requests.put('http://httpbin.org/put',data=payload)
print(r.text)
Requests库解析
request
requests.request(method,url,**kwargs)
**kwargs:控制访问参数
params:字典或者字节序列,作为参数增加到url中
kv={'key1':'value1','key2':'value2'}
r=requests.request('GET','http://python123.io/ws',params=kv)
print(r.url)
#http://python123.io/ws?key1=value1&key2=value2
json:json格式的数据作为Request的内容
kv={'key1':'value1'}
r=requests.request('POST','http://python123.io/ws',json=kv)
header:字典,http定制头
hd={'user-agent':'Chrome/10'}
r=requests.request('POST','http://python123.io/ws',headers=hd)
cookies:字典或者cookieJar,Request中的cookie
auth:元组,支持http认证功能
files:字典类型,传输文件
fs={'file':open('data.xls'),'rb'}
r=requests.request('POST','http://python123.io/ws',files=fs)
timeout:设定超时时间,以秒为单位
r=requests.request('GET','http://www.baidu.com',timeout=10)
proxies:字典类型,设定代理服务器,可以增加登录的认证
异常ip地址
pxs={'http':'http://user:pass@10.10.10.1:1234',
'http':'http://10.10.10.1:4321'}
r=requests.request('GET','http://www.baidu.com',proxies=pxs)
allow_redirects:重定向开关
stream:获取内容重定向下载开关
verify:认证ssl证书开关
head
13个控制参数和request完全一样
post
post(url,data=None,json=None,**kwargs)
url:要更新页面的url链接
data:字典
json:JSON的数据格式,Request的内容
**kwargs:11个访问控制参数
put
url:要更新的url链接
data:字典,字节序列或者文件,request的内容
**kwargs:12个访问控制参数
patch
url:要更新的页面的url
data:字典、字节序列或者文件,request的内容
**kwargs:12个访问控制参数
delete
url 要删除的url的资源
**kwargs:13个访问的控制参数
Requests的基本使用的更多相关文章
- requests的content与text导致lxml的解析问题
title: requests的content与text导致lxml的解析问题 date: 2015-04-29 22:49:31 categories: 经验 tags: [Python,lxml, ...
- requests源码阅读学习笔记
0:此文并不想拆requests的功能,目的仅仅只是让自己以后写的代码更pythonic.可能会涉及到一部分requests的功能模块,但全看心情. 1.另一种类的初始化方式 class Reques ...
- Python爬虫小白入门(二)requests库
一.前言 为什么要先说Requests库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种HTTP请求来获取网站的数据.网络上的模块.库.包指的都是同一种东西,所以后文中可能会在不同地 ...
- 使用beautifulsoup与requests爬取数据
1.安装需要的库 bs4 beautifulSoup requests lxml如果使用mongodb存取数据,安装一下pymongo插件 2.常见问题 1> lxml安装问题 如果遇到lxm ...
- python爬虫学习(6) —— 神器 Requests
Requests 是使用 Apache2 Licensed 许可证的 HTTP 库.用 Python 编写,真正的为人类着想. Python 标准库中的 urllib2 模块提供了你所需要的大多数 H ...
- ImportError: No module named 'requests'
补充说明: 当前环境是在windows环境下 python版本是:python 3.4. 刚开始学习python,一边看书一边论坛里阅读感兴趣的代码, http://www.oschina.net/c ...
- Python-第三方库requests详解
Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...
- Requests 乱码
当使用Requests请求网页时,出现下面图片中的一些乱码,我就一脸蒙逼. 程序是这样的. def getLinks(articleUrl): headers = { "Uset-Agent ...
- 爬虫requests模块 2
会话对象¶ 会话对象让你能够跨请求保持某些参数.它也会在同一个 Session 实例发出的所有请求之间保持 cookie, 期间使用 urllib3 的 connection pooling 功能.所 ...
- 爬虫requests模块 1
让我们从一些简单的示例开始吧. 发送请求¶ 使用 Requests 发送网络请求非常简单. 一开始要导入 Requests 模块: >>> import requests 然后,尝试 ...
随机推荐
- 【ipc-mq】根据mq的key查看使用进程
使用ipcs -q可以得到key与msqid的对应关系,从而找到msgid webadmin@172.172.179.3:/usr/local/webapps/test_ma[17:17:36]$ i ...
- 虚拟机安装 Output error file to the following location
有的用户会对你中安装虚拟机系统,但偶尔会在安装过程中遇到一些问题.比如在电脑安装虚拟机系统时出现提示“Output error file to the following location”,这一般是 ...
- 12. ClustrixDB 为容错和可用性分配磁盘空间
集群必须包含足够的空闲磁盘空间,以便从节点或区域故障中自动恢复.要计算在发生故障后仍然允许ClustrixDB完全重新保护数据的情况下可以使用的最大磁盘空间量,可以使用以下公式: 最大磁盘利用率% = ...
- 3. ClustrixDB 操作
测试数据库 一. 测试分片,存储信息 测试前: clxm@p2cn1uclx101m_10.248.100.241 /data]$ clx statCluster Name: cle69e350c2c ...
- LeetCode - 乘积最大子串
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子串(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示例 2: ...
- java.lang.IllegalArgumentException: java.io.IOException: Alias name [tomcat] does not identify a key entry
java.lang.IllegalArgumentException: java.io.IOException: Alias name [tomcat] does not identify a key ...
- SpringBoot与jackson.databind兼容报错问题
SpringBoot与jackson.databind兼容报错问题 ———————————————— 1.SpringBoot版本V2.0.0其依赖的jackson-databind版本为V2.9.4 ...
- select 语句关键字优先级
1.select 语句优先级 select classid, userid, name, age from study where userid > 15 group by classid ha ...
- ROM和RAM的内存详细说明
1.首先是ROM 的读取是需要提前两个地址的读取,所以要想读取0地址的数据,你需要给地址是2 2.关于宽度,深度的计算 假设我们要存取如下取模的数据,该模的设置口语描述为:这是显示的2个字节,其中一个 ...
- CodeChef DGCD Dynamic GCD
CodeChef题面 Time limit 210 ms Code length Limit //内存限制也不说一下,真是的-- 50000 B OS Linux Language limit C, ...