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)

大家都在看

  • pg substring 正则提取子串

    官方案例: 测试: posted @2022-02-08 19:48 cheng_blog 阅读(218 ) 评论() 编辑 Original: https://www.cnblo…

    数据库 2023年6月16日
    080
  • 回溯法套路总结与应用

    概述 回溯法常用于遍历一个列表元素的所有所有子集,比如全排列问题。可以说深度优先搜索就是回溯法的一种特殊形式。该方法的时间复杂度比较大一般为O(N!),它不像动态规划存在重叠子问题…

    数据库 2023年6月11日
    082
  • Wireshark记录总结

    一. wireshark介绍说明:网络封包分析开源软件功能:截取网络封包,使用WinPCAP作为接口,直接与网卡进行数据报文交换 二、wireshark安装及使用【出处:jack_…

    数据库 2023年6月14日
    076
  • Hadoop生态一—分布式文件系统HDFS

    分布式文件系统: 统一管理分布在集群上的文件系统设计思想分而治之:将大文件、大批量文件,分布式存放在大量服务器上,以便于采取分而治之的方式对海量数据进行运算分析; 在大数据系统中作…

    数据库 2023年6月6日
    074
  • 集合

    集合分为单列集合和双列集合。 Collection集合的体系&…

    数据库 2023年6月16日
    070
  • SQL Server内置的HTAP技术

    SQL Server内置的HTAP技术 目录 背景 SQL Server在OLAP上的发展 SQL Server的初代HTAP SQL Server逐渐增强的HTAP SQL Se…

    数据库 2023年6月9日
    0118
  • Docker 部署前后端项目

    Docker 部署前后端项目 平生不会相思,才会相思,便害相思。 简介:都是被逼的,从零开始一个Docker 部署九个微服务和三个前端项目。其中,这些服务需要用到Nacos、MyS…

    数据库 2023年6月14日
    075
  • MySQL慢查询优化问题-解决办法

    根据发现的问题,找出原因,然后对症下药。 [En] According to the problems found, find the cause, and then prescr…

    数据库 2023年5月24日
    086
  • NO.3 Linux-笔记

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月14日
    086
  • Django 报ckeditor/skins/moono/skin.js 404

    环境: Django:v3.2.5 (pip list查看版本号) django-ckeditor:v6.1.0 bug描述:在admin后台,进行编辑文章的时候,在console…

    数据库 2023年6月9日
    064
  • 【黄啊码】使用think-queue产生大量日志文件怎么办?

    有时候某些原因程序出错,会有大量日志生成,最好调整下日志,单独出来。在配置文件config/queue.php开头添加: use think\facade\Log;Log::ini…

    数据库 2023年6月16日
    084
  • 局域网内访问子网服务(访问电脑虚拟机中的服务)

    局域网内访问子网服务 问题描述: 同一个路由器(172.18.0.0)下面有两台电脑A(172.18.40.45)和B (172.18.44.173) ,在B电脑上安装虚拟机 ,使…

    数据库 2023年6月9日
    084
  • Java8日期时间(LocalDate、LocalTime、LocalDateTime)

    在看题的时候发现了Java8中新加入的日期时间类,觉得这个小哥写的不错,自己也跟着练习下。原文地址:https://blog.csdn.net/yy139926/article/d…

    数据库 2023年6月14日
    074
  • 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知

    面试官: 我看你的简历上写着 精通MySQL,问你个简单的问题, MySQL联合索引有什么特性? 心想,这还不简单,这不是问到我手心里了吗?听我给你背一遍八股文! 我: MySQL…

    数据库 2023年5月24日
    074
  • 7 Java有没有goto

    goto是Java中的保留字,在目前版本的Java中没有使用。 Original: https://www.cnblogs.com/xilichenbokeyuan/p/14149…

    数据库 2023年6月6日
    059
  • MySQL锁(乐观锁、悲观锁、多粒度锁)

    锁 并发事务可能会发生什么情况: [En] What may happen to concurrent transactions: 读-读事务并发:此时是没有问题的,读操作不会对记…

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