详解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中数字以及算数运算符的相关使用
Oct 12 Python
梯度下降法介绍及利用Python实现的方法示例
Jul 12 Python
python使用生成器实现可迭代对象
Mar 20 Python
浅析PHP与Python进行数据交互
May 15 Python
python高级特性和高阶函数及使用详解
Oct 17 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
Jan 11 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python图像阈值化处理及算法比对实例解析
Jun 19 Python
Python用K-means聚类算法进行客户分群的实现
Aug 23 Python
如何使用PyCharm引入需要使用的包的方法
Sep 22 Python
Python 读写 Matlab Mat 格式数据的操作
May 19 Python
Python 装饰器(decorator)常用的创建方式及解析
Apr 24 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
《魔兽争霸3:重制版》翻车了?你想要的我们都没有
2019/11/07 魔兽争霸
php目录拷贝实现方法
2015/07/10 PHP
javascript中的prototype属性使用说明(函数功能扩展)
2010/08/16 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
ajaxFileUpload.js插件支持多文件上传的方法
2014/09/02 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
Node.js的MongoDB驱动Mongoose基本使用教程
2016/03/01 Javascript
购物车前端开发(jQuery和bootstrap3)
2016/08/27 Javascript
a标签跳转到指定div,jquery添加和移除class属性的实现方法
2016/10/10 Javascript
详解Jquery的事件操作和文档操作
2016/12/19 Javascript
深入理解React Native原生模块与JS模块通信的几种方式
2017/07/24 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
2019/01/27 jQuery
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
vue常用高阶函数及综合实例
2021/02/25 Vue.js
python 判断自定义对象类型
2009/03/21 Python
跟老齐学Python之再深点,更懂list
2014/09/20 Python
Python数据库的连接实现方法与注意事项
2016/02/27 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
Python语言描述连续子数组的最大和
2018/01/04 Python
Python GUI编程完整示例
2019/04/04 Python
Python3.6+Django2.0以上 xadmin站点的配置和使用教程图解
2019/06/04 Python
python利用Excel读取和存储测试数据完成接口自动化教程
2020/04/30 Python
Numpy数组的广播机制的实现
2020/11/03 Python
Html5之自定义属性(data-,dataset)
2019/11/19 HTML / CSS
雅虎笔试题(字符串操作)
2015/03/24 面试题
广州一家公司的.NET面试题
2016/06/11 面试题
保安的辞职报告怎么写
2014/01/20 职场文书
环保倡议书
2014/04/14 职场文书
教导主任竞聘演讲稿
2014/05/16 职场文书
2015年销售部工作总结范文
2015/04/27 职场文书
2015年小学生国庆节演讲稿
2015/07/30 职场文书
html5实现点击弹出图片功能
2021/07/16 HTML / CSS
SQL Server远程连接的设置步骤(图文)
2022/03/23 SQL Server