Python中request的基本使用解决乱码问题


Posted in Python onApril 12, 2022

各种请求方式

pip3 install requests
>>> import requests
>>> r = requests.get('https://www.cnblogs.com')
>>> r = requests.post('https://www.cnblogs.com', data = {'key':'value'})
>>> r = requests.put('https://www.cnblogs.com', data = {'key':'value'})
>>> r = requests.delete('https://www.cnblogs.com')
>>> r = requests.head('https://www.cnblogs.com')
>>> r = requests.options('https://www.cnblogs.com')

request各种参数

参数 说明
params 字典或字节序列,作为参数增加到url中
data 字典,字节序列或文件对象,作为request的内容
json JSON格式的数据,作为request的内容
headers 字典,HTTP定制头
cookies 字典或CookieJar, request中的cookie
auth 元组,支持HTTp认证功能
files 字典类型,传输文件
timeout 设定超时时间,秒为单位
proxies 字典类型,设定访问代理服务器,可以增加登录认证
allow_redirects 重定向开关,默认为True
stream 获取内容立即下载开关,默认为True
verify 认证SSL证书开关,默认为True
cert 本地SSL证书路径

request基本使用

import requests
response = requests.get('https://www.cnblogs.com/kermitjam/')
print(response.text)

print(respone.text)  # 响应体转成str
print(respone.content)  # 响应体二进制(图片,视频)
print(respone.status_code)  # 响应状态码
print(respone.headers)  # 响应头
print(respone.cookies)  # 服务端返回的cookie
print(respone.cookies.get_dict())  # 转成字典
print(respone.cookies.items())
print(respone.url)  # 当次请求的地址
print(respone.history)  # 如果有重定向,放到一个列表中.查看上一次请求从哪里来。(图片防盗链)
print(respone.encoding)  # 编码方式
print(respone.iter_content())  # 视频,图片迭代取值
content-length   # 查看下载前文件大小


response.iter_content() # 视频,图片迭代取值
with open("a.mp4",'wb') as f:
    for line in response.iter_content():
        f.write(line)

get请求携带参数

# 方式一:会转码,不推荐
response = requests.get('https://www.baidu.com/s?wd=%E7%BE%8E%E5%A5%B3')

# 方式二:推荐
response = requests.get('https://www.baidu.com/',params={'name':'美女','age':18})

get请求携带headers头

respone = requests.get('http://127.0.0.1:8000/',params={'name':'美女','age':18},
                   headers={
                       # 标志,什么东西发出的请求,浏览器信息,django框架,从哪取?(meta)
                       'User-Agent': 'request',
                       # 上一个页面的地址,图片防盗链
                       'Referer': 'xxx'
                   })
print(respone.status_code)

get请求携带cookie

带cookie,随机字符串(用户信息:也代表session),不管后台用的token认证,还是session认证

一旦登陆了,带着cookie发送请求,表示登陆了(下单,12306买票,评论)

# 第一种方式
ret = requests.get('http://127.0.0.1:8000/',params={'name':'美女','age':18},
                   headers={
                       'cookie': 'key3=value;key2=value',
                   })

# 第二种方式
ret = requests.get('http://127.0.0.1:8000/',params={'name':'美女','age':18},
                   cookies={"islogin":"xxx"})
print(ret.status_code)

post请求携带数据(注册、登录)

# data:urlencoded编码
ret = requests.post('http://127.0.0.1:8000/', data={'name': "jeff", 'age': 18})


# data:json编码
import json
data = json.dumps({'name': "jeff", 'age': 18})
ret = requests.post('http://127.0.0.1:8000/', json=data)
print(ret)
# 注意:编码格式是请求头中带的,所以可以手动修改,在headers中改

session对象

# session对象
session=requests.session()
# 跟requests.get/post用起来完全一样,但是它处理了cookie
# 假设是一个登陆,并且成功
res = session.post('http://127.0.0.1:8000/')
# # 再向该网站发请求,就是登陆状态,不需要手动携带cookie
res = session.get("http://127.0.0.1:8000/")

print(res)

乱码问题

# 加载回来的页面,打印出来,乱码(我们用的是utf8编码),如果网站用gbk,

ret = requests.get('http://127.0.0.1:8000/')
ret.encoding='gbk'  # 修改编码

print(ret.apparent_encoding)  # 当前页面的编码
# ret.encoding = ret.apparent_encoding
print(ret.encoding)
print(ret.apparent_encoding)

解析json数据

# 返回数据,有可能是json格式,有可能是html格式
ret=requests.get('http://127.0.0.1:8000/')
# print(type(ret.text))
# print(ret.text)

a=ret.json()
print(a['name'])
print(type(a))

使用代理

代理简单解释:
	代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。
	
#高匿:服务端,根本不知道我是谁
#普通:服务端是能够知道我的ip的
#http请求头中:X-Forwarded-For:代理的过程

爬虫使用正向代理好处:
	1.突破频率限制。做个代理池,每次请求都是不同的Ip,服务器认为是不同的用户
	2.不会封自己的ip。

正向代理即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端.
反向代理即是服务端代理, 代理服务端, 客户端不知道实际提供服务的服务端
ret = requests.get('https://www.pearvideo.com/', proxies={'http': '47.115.54.89'})
print(type(ret.text))
print(ret.text)

上传文件

# 爬虫用的比较少,后台写服务

file = {'myfile': open("1.txt", 'rb')}
ret = requests.post('http://127.0.0.1:8000/', files=file)
print(ret.content)

以上就是request基本使用及各种请求方式参数的示例的详细内容!

Python 相关文章推荐
跟老齐学Python之Import 模块
Oct 13 Python
浅谈python中的getattr函数 hasattr函数
Jun 14 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
pycharm远程调试openstack代码
Nov 21 Python
使用Python爬取最好大学网大学排名
Feb 24 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
Python SQLAlchemy入门教程(基本用法)
Nov 11 Python
python 计算概率密度、累计分布、逆函数的例子
Feb 25 Python
Python通过4种方式实现进程数据通信
Mar 12 Python
django实现后台显示媒体文件
Apr 07 Python
Python如何给你的程序做性能测试
Jul 29 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
Jan 07 Python
python模拟浏览器 使用selenium进入好友QQ空间并留言
Python安装使用Scrapy框架
Python使用华为API为图像设置多个锚点标签
python实现手机推送 代码也就10行左右
Apr 12 #Python
Python内置包对JSON文件数据进行编码和解码
详细介绍python操作RabbitMq
Python selenium绕过webdriver监测执行javascript
Apr 12 #Python
You might like
PHP不用递归遍历目录下所有文件的代码
2014/07/04 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
2014/07/23 PHP
PHP实现的简单异常处理类示例
2017/05/04 PHP
PHP文件类型检查及fileinfo模块安装使用详解
2019/05/09 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
PHP dirname(__FILE__)原理及用法解析
2020/10/28 PHP
PHP如何解决微信文章图片防盗链
2020/12/09 PHP
JQuery中getJSON的使用方法
2010/12/13 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
2013/04/02 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
javascript删除元素节点removeChild()用法实例
2015/05/26 Javascript
javascript单例模式的简单实现方法
2015/07/25 Javascript
微信jssdk用法汇总
2016/07/16 Javascript
Angularjs 实现动态添加控件功能
2017/05/25 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
JS表单传值和URL编码转换
2018/03/03 Javascript
Vue常用指令详解分析
2018/08/19 Javascript
Vue 中对图片地址进行拼接的方法
2018/09/03 Javascript
浅谈vue项目用到的mock数据接口的两种方式
2019/10/09 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
2019/10/10 jQuery
原生js实现自定义消息提示框
2020/11/19 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
用Python的Django框架完成视频处理任务的教程
2015/04/02 Python
在Django框架中伪造捕捉到的URLconf值的方法
2015/07/18 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
2019/03/01 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
python中os包的用法
2020/06/01 Python
css3实例教程 一款纯css3实现的环形导航菜单
2014/10/20 HTML / CSS
渔夫的故事教学反思
2014/02/14 职场文书
开展读书活动总结
2014/06/30 职场文书
祖国在我心中演讲稿600字
2014/09/23 职场文书
入党积极分子自我批评思想汇报
2014/10/10 职场文书
婚内分居协议书范文
2014/11/26 职场文书