python之_requests库学习_2(post请求参数传递)
2017-11-23 11:09
435 查看
一、定制请求头
定义
注:Requests 不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去,如下图的请求头信息按照需求都可以这样子传递
二、更加复杂的POST请求
在上一篇文章中可以传递带参数的get请求,只需要在url后添加一个
1、传递一些编码为表单形式的数据——非常像一个 HTML 表单。要实现这个,只需简单地传递一个字典给
data参数为元组形式,可传递一个key值包含多个值的参数
2、很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个 dict
3、post一个多部分编码的文件
可以显示的设置文件名、文件类型和请求头
也可以发送作为文件来接收的字符串
定义
headers,类型为
dict
import requests url = 'https://api.douban.com/v2/book/search?q=小王子' headers={'user-agent': 'Mozilla/5.0'} r = requests.get(url,headers=headers)
注:Requests 不会基于定制 header 的具体情况改变自己的行为。只不过在最后的请求中,所有的 header 信息都会被传递进去,如下图的请求头信息按照需求都可以这样子传递
二、更加复杂的POST请求
在上一篇文章中可以传递带参数的get请求,只需要在url后添加一个
params参数即可,下面展示更加复杂的post请求
1、传递一些编码为表单形式的数据——非常像一个 HTML 表单。要实现这个,只需简单地传递一个字典给
data参数。你的数据字典在发出请求时会自动编码为表单形式
import requests payload={'key1':'value1','key2':'value2'} #参数为dict形式 r=requests.post("http://httpbin.org/post",data=payload) print(r.url) print(r.text) >>http://httpbin.org/post #输出url >>{ ... ... "form": { "key1": "value1", "key2": "value2" }, "headers": { "Accept": "*/*", ... ... } }
data参数为元组形式,可传递一个key值包含多个值的参数
import requests payload=(('key1','value1'),('key1','value2')) #参数为元组 r=requests.post("http://httpbin.org/post",data=payload) print(r.url) print(r.text) >>http://httpbin.org/post >>{ ... ... "form": { "key1": [ "value1", "value2" ] }, "headers": { "Accept": "*/*", ... ... } }
2、很多时候你想要发送的数据并非编码为表单形式的。如果你传递一个 string 而不是一个 dict
import requests import json payload={'some':'data'} url = 'http://httpbin.org/post' r=requests.post(url,data=json.dumps(payload))
import requests payload={'some':'data'} url = 'http://httpbin.org/post' r=requests.post(url,json=payload)
{ ... ... "json": { "some": "data" }, ... ... }
3、post一个多部分编码的文件
import requests url='http://httpbin.org/post' path = r'E:\history.txt' files={'file':open(path,'rb')} r = requests.post(url,files=files) #参数为一个文件 print(r.url) print(r.text) >>http://httpbin.org/post >>{ ... ... "files": { "file": "data:application/octet-stream;base64,gANjY29sbGVjdGlvbnMKZGVxdWUKcQBdcQEoSyJLOEtNS0JLRmVLBYZxAlJxAy4=" }, ... ... }
可以显示的设置文件名、文件类型和请求头
import requests url='http://httpbin.org/post' path = r'E:\history.txt' files={'file':('report.xls',open(path,'rb'),'application/vnd.ms-excel', {'Expires': '0'})} r = requests.post(url,files=files) >> "files": { "file": "data:application/vnd.ms-excel;base64,gANjY29sbGVjdGlvbnMKZGVxdWUKcQBdcQEoSyJLOEtNS0JLRmVLBYZxAlJxAy4=" },
也可以发送作为文件来接收的字符串
相关文章推荐
- python学习笔记:使用requests库发送get与post请求
- Python学习记录-----批量发送post请求
- Python Requests-学习笔记(4)-定制请求头和POST
- Python Requests-学习笔记(1)-定制请求头和POST
- post请求网站数据爬取!!!Python学习笔记!
- Python学习记录-----批量发送post请求
- Python3 Requests库 post请求 报错 requests.exceptions.TooManyRedirects: Exceeded 30 redirects.
- python之_requests库学习_3(请求响应信息获取)
- python 使用requests 实现 post 和get请求
- [python] 发POST请求
- Python--get和post请求
- Jsp&Servlet学习 --- get与post请求
- python2-爬虫-POST请求的模拟案例_recv
- Http学习之使用HttpURLConnection发送post和get请求
- python爬虫学习---Requests库的使用
- 练习使用Python post请求爬取数据,并用mySQL数据库进行存储
- Yaws(erlang web服务器框架) 学习记录之获取GET/POST请求参数
- Python实现可设置持续运行时间、线程数及时间间隔的多线程异步post请求功能
- python3.x执行post请求时报错“POST data should be bytes or an iterable of bytes...”的解决方法
- urllib通过Post请求爬去数据并解析JSON(Python)