一.  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 介绍的更多相关文章

  1. Python requests介绍之接口介绍

    Python requests介绍 引用官网介绍 Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. Requests 允许你发送纯天然,植物饲养的 HTTP/1. ...

  2. 1)requests模块

    一:requests 介绍 requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装, 从而使得Pyt ...

  3. Python 网络请求模块 urllib 、requests

    Python 给人的印象是抓取网页非常方便,提供这种生产力的,主要依靠的就是 urllib.requests这两个模块. urlib 介绍 urllib.request 提供了一个 urlopen 函 ...

  4. python爬虫项目(新手教程)之知乎(requests方式)

    -前言 之前一直用scrapy与urllib姿势爬取数据,最近使用requests感觉还不错,这次希望通过对知乎数据的爬取为 各位爬虫爱好者和初学者更好的了解爬虫制作的准备过程以及requests请求 ...

  5. Python ImportError: No module named 'requests'解决方法

    前言:最近在学习python,安装了python3.5的环境后,在网上下载了一个python文件运行的时候,提示ImportError: No module named 'requests'(找不到r ...

  6. 爬虫(1):requests模块

    requests介绍: reqeusts模块:python原生一个基于网络请求的模块,模拟浏览器发起请求. requests模块的优点: - 1.自动处理url编码 - 2.自动处理post请求的参数 ...

  7. Python Requests 速通爆肝、这么牛逼的库你还不会用吗?

    上网原理 爬虫原理 Get.Post Requests 介绍 安装 常用方法 Http协议 开发者工具网络界面 Response对象 下载保存一张图片.一首音乐 添加Headers发送请求 判断HTT ...

  8. Python爬虫的起点

    第一章主要讲解爬虫相关的知识如:http.网页.爬虫法律等,让大家对爬虫有了一个比较完善的了解和一些题外的知识点. 今天这篇文章将是我们第二章的第一篇,我们从今天开始就正式进入实战阶段,后面将会有更多 ...

  9. Python---网络爬虫初识

    1. 网络爬虫介绍 来自wiki的介绍: 网络爬虫(英语:web crawler),也叫网上蜘蛛(spider),是一种用来自动浏览万维网的网络机器人. 但是我们在写网络爬虫时还要注意遵守网络规则,这 ...

随机推荐

  1. linux安全第二周学习总结

    一.实验过程 cd LinuxKernel/linux-3.9.4 qemu -kernel arch/x86/boot/bzImage 然后cd mykernel 您可以看到qemu窗口输出的内容的 ...

  2. nginx服务器去掉url中的index.php 和 配置path_info

    隐藏index.php server { listen 80; server_name yourdomain.com; root /home/yourdomain/www/; index index. ...

  3. 安装cacti监控系统

    1 安装snmp [root@xxxx ~]# yum -y install net-snmp* 2 安装rddtool 3 创建数据库 cacti, 导入 cd xx/cacti/cacti.sql ...

  4. Java考试题之三

    QUESTION 46Given:11. public class Test {12. public static void main(String [] args) {13. int x = 5;1 ...

  5. 【bzoj2318】game with probability

    Portal -->bzoj2318 Description Alice和Bob在玩一个游戏.有n个石子在这里,Alice和Bob轮流投掷硬币,如果正面朝上,则从n个石子中取出一个石子,否则不做 ...

  6. Codeforces 932.E Team Work

    E. Team Work time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. 洛谷P1029 最大公约数和最小公倍数问题

    题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为 ...

  8. git 还原某个文件到特定版本

    1.先使用 git log 查看需要还原的版本号 2.git checkout <版本号> <文件相对路径> 3.git commit -m "xxx"

  9. Bootstrap笔记-加强版

    1.bootstrap引入: <!DOCTYPE html><html lang="zh-cn"><head><meta charset= ...

  10. NOIP 2015 提高组 Day1

    期望得分:100+100+100=300 实际得分:100+100+45=245 T3 相似的代码 复制过去 没有改全,痛失55分 http://www.cogs.pro/cogs/page/page ...