requests 介绍
一. requests 参数
- - method: 提交方式
- - url: 提交地址
- - params: 在URL中传递的参数,GET
- - data: 在请求体里传递的数据
- - json 在请求体里传递的数据
- - headers 请求头
- - cookies Cookies
- - files 上传文件
- - auth 基本认知(headers中加入加密的用户名和密码)
- - timeout 请求和响应的超市时间
- - allow_redirects 是否允许重定向
- - proxies 代理
- - verify 是否忽略证书
- - cert 证书文件
- - stream 村长下大片
- - session: 用于保存客户端历史访问信息
a. url
- . 分析url
- - https://www.baidu.com/s?wd=美女 = https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3
- - 导入from urllib.parse import urlencode
- . 分析请求头headers
- - User-Agent
- . Get请求不需要考虑请求体
- import requests
- from urllib.parse import urlencode
- search_input = input(">>: ")
- keyword = urlencode({"wd":search_input},encoding="utf-8")
- url = "url = https://www.baidu.com/s?" + keyword
- requests.get(url,
- headers={
- "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
- }
- )
b. params
- # params 参数省去自己转换
- import requests
- from urllib.parse import urlencode
- search_input = input(">>: ")
- requests.get("https://www.baidu.com/s?",
- params={"wd":search_input},
- headers={
- "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
- }
- )
c. headers
- ddd
d. cookies
e. file 发送文件
- import requests
- requests.post(
- url='xxx',
- filter={
- 'name1': open('a.txt','rb'), #名称对应的文件对象
- 'name2': ('bbb.txt',open('b.txt','rb')) #表示上传到服务端的名称为 bbb.txt
- }
- )
f. auth 认证
- #配置路由器访问192.168.0.1会弹出小弹窗,输入用户名,密码 点击登录不是form表单提交,是基本登录框,这种框会把输入的用户名和密码 经过加密放在请求头发送过去
- import requests
- requests.post(
- url='xxx',
- filter={
- 'name1': open('a.txt','rb'), #名称对应的文件对象
- 'name2': ('bbb.txt',open('b.txt','rb')) #表示上传到服务端的名称为 bbb.txt
- }
- )
g. stream 流
- #如果服务器文件过大,循环下载
- def param_stream():
- ret = requests.get('http://127.0.0.1:8000/test/', stream=True)
- print(ret.content)
- ret.close()
- # from contextlib import closing
- # with closing(requests.get('http://httpbin.org/get', stream=True)) as r:
- # # 在此处理响应。
- # for i in r.iter_content():
- # print(i)
h. session 和django不同 事例:简化抽屉点赞
- import requests
- session = requests.Session()
- ### 1、首先登陆任何页面,获取cookie
- i1 = session.get(url="http://dig.chouti.com/help/service")
- ### 2、用户登陆,携带上一次的cookie,后台对cookie中的 gpsd 进行授权
- i2 = session.post(
- url="http://dig.chouti.com/login",
- data={
- 'phone': "",
- 'password': "xxxxxx",
- 'oneMonth': ""
- }
- )
- i3 = session.post(
- url="http://dig.chouti.com/link/vote?linksId=8589623",
- )
- print(i3.text)
二. 登录事例
a. 查找汽车之家新闻 标题 链接 图片写入本地
b. 抽屉点赞 获取页面和登录都会获取gpsd 点赞会使用获取页面的gpsd 而不是登录的gpsd
c. 登录github 携带cookie登录
d. 登录github 演示
- 一. 先获取页面
- 1.请求的url: https://github.com/login
- 2.请求方法: GET
- 3.请求头分析
- - 清除cookie,发现请求头里没有cookie,所以不要写
- - User-Aget
- 4.服务端可能相应头带点东西
- - 例如规定提交表单时必须携带cookie
- - 有可能发送客户端一个csrftoken编码,第二次提交时必须携带csrftoken
- 二. 提交表单完成请求
- 1.请求url: https://github.com/session
- 2.请求方法: POST
- 3.请求头分析
- - Referer: https://github.com/
- - User-Agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
- - cookies
- 4.请求体
- commit: Sign in
- utf8: ✓
- authenticity_token: HIHg6UxhecIFqAGrHiGapG4y+8OShE6xJhJHU6wxg3mTo30JhYiENFu+JWtdFSj//5cCx6NaMEgcnsvF5MA8VQ==
- #分析authenticity_token数据,只可能是第一次访问,相应头或相应体发过来的数据
- login: 877252373@qq.com
- password: 123456
- 5.分析第一次请求获取到的authenticity_token
- - 在相应头中找不到
- - 在相应体中找
- 6.结果为最后的跳转结果
- import requests
- import re
- # 第一次请求
- response_get = requests.get("https://github.com/login",
- headers={
- "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36"
- })
- authenticity_token = re.findall(r"authenticity_token.*?value=\"(.*?)\"",response_get.text,re.S)[]
- response_cookie = response_get.cookies.get_dict()
- # 第二次登录
- response_post = requests.post("https://github.com/session",
- headers = {
- "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36",
- "Referer":"https://github.com/",
- },
- cookies = response_cookie,
- data={
- "commit": "Sign in",
- "utf8": "✓",
- "authenticity_token": authenticity_token,
- "login": "8772 @ qq.com",
- "password": ""
- })
- print(response_post.text)
requests 介绍的更多相关文章
- Python requests介绍之接口介绍
Python requests介绍 引用官网介绍 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. Requests 允许你发送纯天然,植物饲养的 HTTP/1. ...
- 1)requests模块
一:requests 介绍 requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装, 从而使得Pyt ...
- Python 网络请求模块 urllib 、requests
Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是 urllib.requests这两个模块. urlib 介绍 urllib.request 提供了一个 urlopen 函 ...
- python爬虫项目(新手教程)之知乎(requests方式)
-前言 之前一直用scrapy与urllib姿势爬取数据,最近使用requests感觉还不错,这次希望通过对知乎数据的爬取为 各位爬虫爱好者和初学者更好的了解爬虫制作的准备过程以及requests请求 ...
- Python ImportError: No module named 'requests'解决方法
前言:最近在学习python,安装了python3.5的环境后,在网上下载了一个python文件运行的时候,提示ImportError: No module named 'requests'(找不到r ...
- 爬虫(1):requests模块
requests介绍: reqeusts模块:python原生一个基于网络请求的模块,模拟浏览器发起请求. requests模块的优点: - 1.自动处理url编码 - 2.自动处理post请求的参数 ...
- Python Requests 速通爆肝、这么牛逼的库你还不会用吗?
上网原理 爬虫原理 Get.Post Requests 介绍 安装 常用方法 Http协议 开发者工具网络界面 Response对象 下载保存一张图片.一首音乐 添加Headers发送请求 判断HTT ...
- Python爬虫的起点
第一章主要讲解爬虫相关的知识如:http.网页.爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点. 今天这篇文章将是我们第二章的第一篇,我们从今天开始就正式进入实战阶段,后面将会有更多 ...
- Python---网络爬虫初识
1. 网络爬虫介绍 来自wiki的介绍: 网络爬虫(英语:web crawler),也叫网上蜘蛛(spider),是一种用来自动浏览万维网的网络机器人. 但是我们在写网络爬虫时还要注意遵守网络规则,这 ...
随机推荐
- python基础----列表生成式、生成器表达式
结论: 1.把列表解析的[]换成()得到的就是生成器表达式 2.列表解析与生成器表达式都是一种便利的编程方式,只不过生成器表达式更节省内存 3.Python不但使用迭代器协议,让for循环变得更加通用 ...
- JAVA导出Excel(支持多sheet)
一.批量导出: /** * * @Title: expExcel * @Description: 批量导出客户信息 * @param @param params * @param @param req ...
- move_base代码学习一
System overview move_base 源码 API nav_core BaseGlobalPlanner BaseLocalPlanner RecoveryBehavior Recove ...
- python 之 strip()--(转载)
原博地址:http://www.jb51.net/article/37287.htm 函数原型 声明:s为字符串,rm为要删除的字符序列 s.strip(rm) 删除s字符串中开头.结尾 ...
- socket编程学习step2
引言:主机之间如何相互交互呢?网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口“可以唯一标识主机中的应用进程.这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的 ...
- vmvare安装ubuntu后
配置源: http://wiki.ubuntu.org.cn/%E6%BA%90%E5%88%97%E8%A1%A8#Trusty.2814.04.29.E7.89.88.E6.9C.AC 清理工作: ...
- 高并发大容量NoSQL解决方案探索
大数据时代,企业对于DBA也提出更高的需求.同时,NoSQL作为近几年新崛起的一门技术,也受到越来越多的关注.本文将基于个推SRA孟显耀先生所负责的DBA工作,和大数据运维相关经验,分享两大方向内容: ...
- 基于OpenResty和Node.js的微服务架构实践
什么是微服务? 传统的单体服务架构是单独服务包,共享代码与数据,开发成本较高,可维护性.伸缩性较差,技术转型.跨语言配合相对困难.而微服务架构强调一个服务负责一项业务,服务可以单独部署,独立进行技术选 ...
- [Z3001] connection to database 'zabbix' failed: [1045] Access denied for user 'zabbix'@'localhost' (using password: YES)
在配置了zabbix服务端后,发现:“zabbix server is running”的Value值是“no”, 用:netstat -atnlp|grep 10051 发现没有出现zabbix_s ...
- 「Python」19个python编写技巧
1. 交换赋值 2. Unpacking 3. 使用操作符in 4. 字符串操作 5. 字典键值列表 6. 字典键值判断 7. 字典 get 和 setdefault 方法 8. 判断真伪 9. 遍历 ...