python3 requests模块
一、Requests用法:
1、发送请求:
1)、请求类型:
req_obj = requests.get("https://www.baidu.com")
requests支持多种请求类型:
requests.post
requests.put
requests.delete
requests.head
requests.options 2)、传递URL参数:
payload = {'key1': 'value1', 'key2': 'value2'}
req_obj = requests.get("https://www.baidu.com", params=payload)
print(req_obj.url)
输出:
https://www.baidu.com/?key1=value1&key2=value2
3、响应内容
1)、文本响应内容:
req_obj.text #响应内容Requests 会自动解码来自服务器的内容。大多数 unicode 字符集都能被无缝地解码。
req_obj.encoding #输出编码格式,也可以对它进行赋值 2)、对于非文本的响应内容:
req_obj.content #输出二进制格式 以下载一个图片为例:
req_obj = requests.get("https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1521793519116&di=c4f224e5bebdc582cca54b8d22fddcc5&imgtype=0&src=http%3A%2F%2Fd.hiphotos.baidu.com%2Fimage%2Fpic%2Fitem%2Ff9198618367adab45913c15e87d4b31c8601e4e8.jpg")
with open('asd.jpg','wb') as f:
f.write(req_obj.content) 3)、json响应内容:
req_obj = requests.get('https://github.com/timeline.json')
print(req_obj.json()) #成功调用 r.json() 并不意味着响应的成功,使用 r.raise_for_status() 或者检查 r.status_code 是否和你的期望相同
4、定制请求头:
headers={ 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:58.0) Gecko/20100101 Firefox/58.0',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2'} req_obj = requests.get('https://github.com/timeline.json',headers=headers)
5、复杂的POST请求:
1)、可以是一个字典,是html请求的参数:
payload = {'key1': 'value1', 'key2': 'value2'}
r = requests.post("http://httpbin.org/post", data=payload) 2)、可以是一个json数据:
import json
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
r = requests.post(url, data=json.dumps(payload)) 3)、可以使用自行编码:
url = 'https://api.github.com/some/endpoint'
payload = {'some': 'data'}
r = requests.post(url, json=payload) 注:上面两种的区别是:
json 表示使用application/json方式提交请求
data 使用application/form-urlencode方式提交请求
6、响应状态码:
req_obj = requests.get("https://www.baidu.com", params=payload)
print(req_obj.encoding)
print(req_obj.status_code == requests.codes.ok) req_obj.raise_for_status() #如果发送了一个错误请求(一个 4XX 客户端错误,或者 5XX 服务器错误响应)会抛出异常
7、其他一些使用方式:
req_obj = requests.get("https://www.baidu.com")
print(req_obj.headers) #响应头
print(req_obj.cookies) #响应Cookies
print(req_obj.history) #请求历史
requests.get('http://github.com', allow_redirects=False) #禁用重定
requests.get('http://github.com', timeout=0.001) #设置超时时间
with open('massive-body',‘rb’) as f:
requests.post('http://some.url/streamed', data=f) #上传文件
requests.get('https://github.com', verify=True) #开启证书验证(默认开启)
一些高级的用法见:
http://docs.python-requests.org/zh_CN/latest/user/advanced.html#streaming-uploads
异步非阻塞请求:https://github.com/kennethreitz/grequests
python3 requests模块的更多相关文章
- python3: requests模块的使用;
requests库常用于http请求,可以很方便对网页进行爬取: 主要方法(七个): 方法 解释 requests.request() 构造一个请求,支持以下各种方法 requests.get() 获 ...
- python3:requests模块-写了一点
使用requests,它的七个主要方法,在这里只讲两个:get.post >>> import requests >>> r=requests.get(" ...
- python3 requests模块 基本操作
import requests import json # 1.HTTP方法 requests.get('https://github.com/timeline.json') #GET请求 reque ...
- python3 requests 模块 json参数和data参数区别
json 表示使用application/json方式提交请求 data 使用application/form-urlencode方式提交请求
- [实战演练]python3使用requests模块爬取页面内容
本文摘要: 1.安装pip 2.安装requests模块 3.安装beautifulsoup4 4.requests模块浅析 + 发送请求 + 传递URL参数 + 响应内容 + 获取网页编码 + 获取 ...
- python3使用requests模块完成get/post/代理/自定义header/自定义Cookie
一.背景说明 http请求的难易对一门语言来说是很重要的而且是越来越重要,但对于python一是urllib一些写法不太符合人的思维习惯文档也相当难看,二是在python2.x和python3.x中写 ...
- Python3:Requests模块的异常值处理
Python3:Requests模块的异常值处理 用Python的requests模块进行爬虫时,一个简单高效的模块就是requests模块,利用get()或者post()函数,发送请求. 但是在真正 ...
- (转)Python3之requests模块
原文:https://www.cnblogs.com/wang-yc/p/5623711.html Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另 ...
- Python3之requests模块
Python标准库中提供了:urllib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种方法覆盖,来完成最简单的任务. 发送G ...
随机推荐
- 【Mac + GitHub】之在另一台Mac电脑上下载GitHub的SSH链接报错
当输入git命令github项目时报错: ⇒ git clone git@github.com:/TX-Class.git Cloning into 'TX-Class'... Warning: Pe ...
- ApexSql Log 2016破解版&补丁
绿色破解版: http://download.csdn.net/detail/gsyifan/9316993 官网: https://www.apexsql.com/sql_tools_log.asp ...
- dom4j api 详解
1.DOM4J简介 DOM4J是 dom4j.org 出品的一个开源 XML 解析包.DOM4J应用于 Java 平台,采用了 Java 集合框架并完全支持 DOM,SAX 和 JAXP. DOM4J ...
- java算法-数学之美一
巧用数学的思想来解决程序算法问题,这样的代码如诗般优美.通过数学思想来看问题,也能将程序简单化.“斐波那契数列”对于java程序员来说一定不陌生.当然这个问题的解决方案也有很多.用一个例子说明数学思想 ...
- redis php 实例二
前面一篇博客主要是string类型,list类型和set类型,下面hash类型和zset类型 1,hset 描述:将哈希表key中的域field的值设为value.如果key不存在,一个新的哈希表被创 ...
- (转)java并发对象锁、类锁、私有锁
转自:http://ifeve.com/java-locks/ 建议参考:http://www.zhihu.com/question/28113814 Java类锁和对象锁实践 感谢[jiehao]同 ...
- 一起talk C栗子吧(第二十五回:C语言实例--二分查找)
各位看官们,大家好,上一回中咱们说的是顺序查找的样例,这一回咱们说的样例是:二分查找.闲话休 提,言归正转. 让我们一起talk C栗子吧. 看官们,我们在上一回中说了查找的相关内容,而且介绍了一种查 ...
- linux用户与组管理命令的基本操作
用户账号管理命令 为了提高系统的利用率,避免因多个用户共用一个root账号而造成不必要要的系统安全隐患,通常需要为 新用户添加账户.在Linux系统中,添加用户只能由超级用户来完成,也就是说,只能由r ...
- Delphi 发送邮件 通过Office Outlook
Delphi 发送邮件 通过Office Outlook 网上搜到的Delphi邮件发送系统,绝大多数是使用SMTP协议来发送. 但是事实上它们已经过时了,大多数邮件服务器已经屏蔽了Delphi In ...
- Entity Frameword 查询 sql func linq 对比
Entity Framework是个好东西,虽然没有Hibernate功能强大,但使用更简便.今天整理一下常见SQL如何用EF来表达,Func形式和Linq形式都会列出来(本人更多在用Func形式,l ...