requests模块的使用

安装:pip install requests

get请求

1、发送 get 请求

import requests

header = {
    'referer': 'https://www.baidu.com'
}

请求并获取返回结果
re = requests.get('https://t7.baidu.com/it/u=1951548898,3927145&fm=193', headers=header)

2、请求中携带数据

第一种:中文会被编码
ret = requests.get('https://www.baidu.com/s?wd=小杨')
第二种:会自动进行编码(推荐)
ret = requests.get('https://www.baidu.com/', params={'wd': '小杨'})

3.请求中携带cookie

方式一:在header中放入cookie
header = {
    'referer': 'https://www.baidu.com',
    'cookie':'key=qeinpkdi;key2=laisdno;key3=winqcl'
}
ret = requests.get('http://127.0.0.1', headers=header)

方式二:cookies是一个字典或者CookieJar对象
ret = requests.get('http://127.0.0.1', cookies={'key': 'insidns'})

post请求

post 请求和 get 请求大致都是一样的:

1、发送post请求,携带数据

ret = requests.post('http://127.0.0.1', data={'name': '小杨'})

2、自动携带cookie

session = requests.session()
res = session.post('http://127.0.0.1/login/')   # 假设这个请求登录了
ret = session.get('http://127.0.0.1/index/')    # 现在不需要手动带cookie,session会自己处理

response响应对象

也就是请求后响应的对象

1、查看响应信息

response=requests.post('http://127.0.0.1:8000/index/',data={'name':'xiaoyang'})

print(response.text)         # 响应的文本
print(response.content)      # 响应体的二进制

print(response.status_code)  # 响应状态码
print(response.headers)      # 响应头
print(response.cookies)      # cookie
print(response.cookies.get_dict())   # 把cookie转成字典
print(response.cookies.items())      # key和value

print(response.url)          # 请求的url
print(response.history)      # []放重定向之前的地址

print(response.encoding)     # 响应的编码方式

response.iter_content()      # 图片,视频,大文件,可以以一点一点循环取出来
例如:
with open('a.jpg', 'wb') as f:
    for line in response.iter_content():
        f.write(line)

2、编码问题

ret = requests.get('http://127.0.0.1')

如果打印出来的是乱码
方式一:可以从HTML标签meta中查看在encoding
ret.encoding='gb2312'

方式二:自动去HTML标签中查,不用自己去查
ret.encoding=ret.apparent_encoding

3、解析 JSON

ret = requests.get('http://127.0.0.1')
方式一:自己解析的情况下
import json
json.loads(ret.text)

方式二:
ret.json()

高级用法

1、SSL证书验证

https 的请求,会先检查证书是否合法,不合法就报错。

去掉报错,但是会报警告
ret = requests.post('https://127.0.0.1', verify=False)    # 不验证证书,报警告,返回200

去掉报错,并且去掉报警信息
from requests.packages import urllib3
urllib3.disable_warnings()  # 关闭警告
respone=requests.get('https://127.0.0.1', verify=False)

使用证书,需要手动携带
ret = requests.post('https://127.0.0.1',
                    cert=('/path/server.crt',
                          '/path/key'
                          )
                    )

2、使用代理

格式:
respone=requests.get('http://127.0.0.1:8000/index/',proxies={'http':'代理的地址和端口号',})

代理池:列表放了一堆代理ip,每次随机取一个,再发请求就不会封ip了
如果使用高匿代理,后端无论如何拿不到你的ip,使用透明,后端能够拿到你的ip
后端可以通过 X-Forwarded-For 拿到透明代理的ip。

respone=requests.get('https://www.baidu.com/',proxies={'http':'27.46.20.226:8888',})

3、超时设置

respone=requests.get('https://www.baidu.com',
                     timeout=0.0001)

4、文件上传

res=requests.post('http://127.0.0.1',files={'myfile':open('a.jpg','rb')})

Original: https://www.cnblogs.com/XiaoYang-sir/p/15164305.html
Author: Mr-Yang`
Title: requests模块的使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/591846/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • URL解码时,为什么将加号解码为空?

    以下代码在.NET Framework 2.0 中测试。 先看一个例子: test.aspx页面: 当参数 parameters 输出到页面后,值已经不为”A+B&#8…

    数据库 2023年6月11日
    057
  • 自动化测试练手项目推荐

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/80599ac8.html 你好,我是测试蔡坨坨。 最近收到许多自学自动化测试的小伙伴私信,学习了理论知…

    数据库 2023年6月11日
    0116
  • Vue(十二)—组件通信

    参考文章:https://blog.csdn.net/qq_37288477/article/details/86630428 父子通信: 1.父传子props 官网demo:ht…

    数据库 2023年6月16日
    0100
  • Docker下部署Spring Boot项目

    1.编写Docker File FROM openjdk:8-jdk-slim LABEL maintainer=ddzhan COPY target/*.jar /app.jar…

    数据库 2023年6月6日
    090
  • SQL的语法

    创建: create database [if not exists] 数据库名称 [default charset 字符集] [collate 排序规则]; (PS:方括号(&#…

    数据库 2023年5月24日
    063
  • MySql 删除数据表

    定义: 删除数据表就是删除数据库中已经存在的表。请注意,当表被删除时,表的定义和表中的所有数据都将被删除。因此,在执行删除操作之前,最好对表中的数据进行备份,以避免无法挽回的后果。…

    数据库 2023年5月24日
    093
  • 动手实验查看MySQL索引的B+树的高度

    一:文中几个概念 h:统称索引的高度;h1:主键索引的高度;h2:辅助索引的高度;k:非叶子节点扇区个数。 二:索引结构 叶子节点其实是双向链表,而叶子节点内的行数据是单向链表,该…

    数据库 2023年6月14日
    0103
  • [springmvc]乱码问题解决以及JSON和java对象转换的几种方法

    在web服务器配置中直接加上下面的过滤处理 encoding org.springframework.web.filter.CharacterEncodingFilter enco…

    数据库 2023年6月16日
    078
  • flowable 从zip压缩包 部署流程定义

    /**部署流程定义(从zip压缩包) * @param name //部署名称 * @param zippath //zip文件路径 * @return 部署ID * @from …

    数据库 2023年6月6日
    090
  • Mysql的知识梳理

    数据准备: –建表 create table customer_jia(CID int(4), Cname varchar(20), Csex varchar(2), …

    数据库 2023年6月16日
    086
  • update更新很慢(字段类型引发)

    开发人员在sql审核平台提交了2000多条update语句,每条语句只更新一条,where条件由索引,在sql审核平台在测试执行阶段已经执行了20多分钟。于是让看一下数据库后台线程…

    数据库 2023年6月16日
    0115
  • 面试题: 字符串转整型 终结者

    随着代码手感增强, 想为这个问题写个终结者系列. 缅怀下曾经的自己. 我们审视下这个问题, 整数字符串转成整数. 那么意味着有效字符仅有 “+-0123456789&#…

    数据库 2023年6月9日
    099
  • MySQL Operator 02 | 脚手架选型 & 工程创建

    高日耀 资深数据库内核研发毕业于华中科技大学,喜欢研究主流数据库架构和源码,并长期从事分布式数据库内核研发。曾参与分布式 MPP 数据库 CirroData 内核开发(东方国信),…

    数据库 2023年5月24日
    0107
  • 达梦产品技术支持-DM8-数据库安装

    (该文档只适合个人环境搭建,未涉及到数据库的各种参数配置,未涉及到数据库规划,若需要企业环境搭建请咨询专业人员) 基于Windows的安装 windows下安装是图形化界面,与li…

    数据库 2023年6月11日
    082
  • MySQL基础入门学习教程,带你快速掌握mysql

    Original: https://www.cnblogs.com/chaichaichai/p/15243386.htmlAuthor: 牛仔码农Title: MySQL基础入门…

    数据库 2023年5月24日
    0115
  • day39-网络编程01

    Java网络编程01 1.网络相关的概念 1.1网络通信和网络 *网络通信 概念:两台设备之间通过网络实现数据传输 网络通信:将数据通过网络从一台设备传输到另一台设备 java.n…

    数据库 2023年6月11日
    0103
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球