详解Python requests模块


Posted in Python onJune 21, 2021

前言

虽然Python的标准库中 urllib2 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 “HTTP for Humans”,说明使用更简洁方便。

Requests 继承了urllib2的所有特性。Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的 URL 和 POST 数据自动编码。

开源地址:https://github.com/kennethreitz/requests

中文文档 API: http://docs.python-requests.org/zh_CN/latest/index.html

一、GET请求

1.1 最基本的GET请求

# 写法一:
response = requests.get("http://www.baidu.com/")
# 写法二:
# response = requests.request("get", http://www.baidu.com/)

1.2 添加headers和查询参数

如果想添加 headers,可以传入headers参数来增加请求头中的headers信息。如果要将参数放在url中传递,可以利用 params 参数。

import requests
 
kw = {'wd':'长城'}
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
 
# params 接收一个字典或者字符串的查询参数,字典类型自动转换为url编码,不需要urlencode()
response = requests.get("http://www.baidu.com/s?", params = kw, headers = headers)
#查看响应内容,response.text 返回的是Unicode格式的数据
print response.text
#<!--STATUS OK--><html> <head><meta http-equiv=content-type content=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge><meta content=always name=referrer> .....
# 查看响应内容,response.content返回的字节流数据
print respones.content
# 查看完整url地址
print response.url
# http://www.baidu.com/?wd=%E9%95%BF%E5%9F%8E
# 查看响应头部字符编码
print response.encoding
# ISO-8859-1
# 查看响应码
print response.status_code
# 200

二、POST请求

2.1 最基本的POST请求

response = requests.post("http://www.baidu.com/", data = data)

2.2 传入data数据

对于 POST 请求来说,我们一般需要为它增加一些参数。那么最基本的传参方法可以利用 data 这个参数。

import requests
 
formdata = {
    "type":"AUTO",
    "i":"i love python",
    "doctype":"json",
    "xmlVersion":"1.8",
    "keyfrom":"fanyi.web",
    "ue":"UTF-8",
    "action":"FY_BY_ENTER",
    "typoResult":"true"
}
 
url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null"
 
headers={ "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36"}
 
response = requests.post(url, data = formdata, headers = headers)
print response.text
# {"type":"EN2ZH_CN","errorCode":0,"elapsedTime":2,"translateResult":[[{"src":"i love python","tgt":"我喜欢python"}]],"smartResult":{"type":1,"entries":["","肆文","高德纳"]}}
# 如果是json文件可以直接显示
print response.json()
# {u'errorCode': 0, u'elapsedTime': 0, u'translateResult': [[{u'src': u'i love python', u'tgt': u'\u6211\u559c\u6b22python'}]], u'smartResult': {u'type': 1, u'entries': [u'', u'\u8086\u6587', u'\u9ad8\u5fb7\u7eb3']}, u'type': u'EN2ZH_CN'}

到此这篇关于详解Python requests模块的文章就介绍到这了,更多相关Python requests模块内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python 数据加密代码
Dec 24 Python
Python Web开发模板引擎优缺点总结
May 06 Python
举例讲解Python中的算数运算符的用法
May 13 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
django 发送邮件和缓存的实现代码
Jul 18 Python
Pycharm更换python解释器的方法
Oct 29 Python
在Python中字典根据多项规则排序的方法
Jan 21 Python
Python OpenCV之图片缩放的实现(cv2.resize)
Jun 28 Python
对Django 中request.get和request.post的区别详解
Aug 12 Python
Java文件与类动手动脑实例详解
Nov 10 Python
pytorch 实现查看网络中的参数
Jan 06 Python
python实现三种随机请求头方式
Jan 05 Python
Python pandas读取CSV文件的注意事项(适合新手)
python简单验证码识别的实现过程
Python pygame实现中国象棋单机版源码
Python并发编程实例教程之线程的玩法
Jun 20 #Python
python迷宫问题深度优先遍历实例
Jun 20 #Python
Python虚拟环境virtualenv是如何使用的
Python机器学习之底层实现KNN
Jun 20 #Python
You might like
预告映像公开!第1章续篇剧场版动画《Princess Principal Crown Handler》4月10日上映!
2020/03/06 日漫
php实现12306火车票余票查询和价格查询(12306火车票查询)
2014/01/14 PHP
PHP编程实现计算抽奖概率算法完整实例
2017/08/09 PHP
jQuery EasyUI API 中文文档 - Tabs标签页/选项卡
2011/10/01 Javascript
javaScript 利用闭包模拟对象的私有属性
2011/12/29 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
用js判断页面刷新或关闭的方法(onbeforeunload与onunload事件)
2012/06/22 Javascript
jquery 页面滚动到底部自动加载插件集合
2014/01/31 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
基于jquery实现页面滚动时顶部导航显示隐藏
2020/04/20 Javascript
深入浅析NodeJs并发异步的回调处理
2015/12/21 NodeJs
JS面向对象(3)之Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
2016/02/25 Javascript
JS 清除字符串数组中,重复元素的实现方法
2016/05/24 Javascript
js canvas实现擦除动画
2016/07/16 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
JS笛卡尔积算法与多重数组笛卡尔积实现方法示例
2017/12/01 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
vue集成openlayers加载geojson并实现点击弹窗教程
2020/09/24 Javascript
js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome
2020/10/01 Javascript
微信小程序实现倒计时功能
2020/11/19 Javascript
[01:14:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS Orenda
2014/05/22 DOTA
[42:32]完美世界DOTA2联赛循环赛 Magma vs PXG BO2第二场 10.28
2020/10/28 DOTA
Python自动化构建工具scons使用入门笔记
2015/03/10 Python
举例讲解Python的Tornado框架实现数据可视化的教程
2015/05/02 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
Python图像处理模块ndimage用法实例分析
2019/09/05 Python
基于Python实现天天酷跑功能
2021/01/06 Python
香港个人化生活购物网站:Ballyhoo Limited
2016/09/10 全球购物
小学教师自我鉴定
2013/11/07 职场文书
教师实习自我鉴定
2013/12/13 职场文书
学生吸烟检讨书
2014/09/14 职场文书
CSS filter 有什么神奇用途
2021/05/25 HTML / CSS
sql字段解析器的实现示例
2021/06/23 SQL Server
MySQL创建管理KEY分区
2022/04/13 MySQL