详解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随机生成一个6位的验证码代码分享
Mar 24 Python
Python and、or以及and-or语法总结
Apr 14 Python
Python数据结构与算法之二叉树结构定义与遍历方法详解
Dec 12 Python
python实现决策树分类算法
Dec 21 Python
Python中装饰器学习总结
Feb 10 Python
tensorflow1.0学习之模型的保存与恢复(Saver)
Apr 23 Python
python 检查是否为中文字符串的方法
Dec 28 Python
Python 多个图同时在不同窗口显示的实现方法
Jul 07 Python
pytorch对梯度进行可视化进行梯度检查教程
Feb 04 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
Jun 06 Python
Python内置方法和属性应用:反射和单例(推荐)
Jun 19 Python
关于PySnooper 永远不要使用print进行调试的问题
Mar 04 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
php学习之简单计算器实现代码
2011/06/09 PHP
php合并js请求的例子
2013/11/01 PHP
php基于base64解码图片与加密图片还原实例
2014/11/03 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
Laravel 前端资源配置教程
2019/10/18 PHP
根据邮箱的域名跳转到相应的登录页面的代码
2012/02/27 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
escape函数解决js中ajax传递中文出现乱码问题
2014/10/30 Javascript
javascript中AJAX用法实例分析
2015/01/30 Javascript
JavaScript通过this变量快速找出用户选中radio按钮的方法
2015/03/23 Javascript
使用BootStrap建立响应式网页——通栏轮播图(carousel)
2016/12/21 Javascript
js实现日历的简单算法
2017/01/24 Javascript
Three.js实现绘制字体模型示例代码
2017/09/26 Javascript
JS实现预加载视频音频/视频获取截图(返回canvas截图)
2017/10/09 Javascript
js中split()方法得到的数组长度问题
2018/07/19 Javascript
javascript设计模式之装饰者模式
2020/01/30 Javascript
[46:00]Ti4 冒泡赛第二轮LGD vs C9 2
2014/07/14 DOTA
[03:07]2015国际邀请赛选手档案EHOME.rOtK 是什么让他落泪?
2015/07/31 DOTA
如何处理Python3.4 使用pymssql 乱码问题
2016/01/08 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
2018/05/08 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
python保存二维数组到txt文件中的方法
2018/11/15 Python
python add_argument()用法解析
2020/01/29 Python
Python如何用wx模块创建文本编辑器
2020/06/07 Python
python中pathlib模块的基本用法与总结
2020/08/17 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python 基于selenium实现鼠标拖拽功能
2020/12/24 Python
Python3+Flask安装使用教程详解
2021/02/16 Python
铭宣海淘转运:美国、日本、英国转运等全球转运公司
2019/09/10 全球购物
自我评价的范文
2014/02/02 职场文书
绘画专业自荐信
2014/07/04 职场文书
期中考试复习计划
2015/01/19 职场文书
公司聚餐通知
2015/04/22 职场文书