详解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 daemon守护进程实现
Aug 27 Python
pandas基于时间序列的固定时间间隔求均值的方法
Jul 04 Python
Django使用Channels实现WebSocket的方法
Jul 28 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
学习和使用python的13个理由
Jul 30 Python
关于阿里云oss获取sts凭证 app直传 python的实例
Aug 20 Python
利用Python如何实时检测自身内存占用
May 09 Python
使用python实现时间序列白噪声检验方式
Jun 03 Python
Pandas中DataFrame基本函数整理(小结)
Jul 20 Python
Pytorch之Tensor和Numpy之间的转换的实现方法
Sep 03 Python
python 实现两个变量值进行交换的n种操作
Jun 02 Python
Python 一键获取电脑浏览器的账号密码
May 11 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
PHP随机数生成代码与使用实例分析
2011/04/08 PHP
php _autoload自动加载类与机制分析
2012/02/10 PHP
PHP抽象类 介绍
2012/06/13 PHP
PHP实现的oracle分页函数实例
2016/01/25 PHP
php之可变函数的实例详解
2017/09/13 PHP
js window.event对象详尽解析
2009/02/17 Javascript
JS backgroundImage控制
2009/05/19 Javascript
jquery获取tr中控件值并操作tr实现思路
2013/03/27 Javascript
jQuery1.9.1针对checkbox的调整方法(prop)
2014/05/01 Javascript
Node.js中创建和管理外部进程详解
2014/08/16 Javascript
Jquery中find与each方法用法实例
2015/02/04 Javascript
在JavaScript的正则表达式中使用exec()方法
2015/06/16 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
最常见和最有用的字符串相关的方法详解
2017/02/06 Javascript
用move.js库实现百叶窗特效
2017/02/08 Javascript
微信小程序图片宽100%显示并且不变形
2017/06/21 Javascript
React应用中使用Bootstrap的方法
2017/08/15 Javascript
element-ui 限制日期选择的方法(datepicker)
2018/05/16 Javascript
微信小程序自定义弹窗滚动与页面滚动冲突的解决方法
2019/07/16 Javascript
axios如何利用promise无痛刷新token的实现方法
2019/08/27 Javascript
keep-Alive搭配vue-router实现缓存页面效果的示例代码
2020/06/24 Javascript
vue-router定义元信息meta操作
2020/12/07 Vue.js
Python类的定义、继承及类对象使用方法简明教程
2015/05/08 Python
解决python nohup linux 后台运行输出的问题
2018/05/11 Python
python启动应用程序和终止应用程序的方法
2019/06/28 Python
Python类中self参数用法详解
2020/02/13 Python
python tkinter之顶层菜单、弹出菜单实例
2020/03/04 Python
里程积分管理买卖交换平台:Points.com
2017/01/13 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
如何安装ruby on rails
2014/02/09 面试题
机电一体化应届生求职信范文
2014/01/24 职场文书
单位作风建设自查报告
2014/10/23 职场文书
九年级化学教学反思
2016/02/22 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript