详解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 相关文章推荐
matplotlib在python上绘制3D散点图实例详解
Dec 09 Python
Python3生成手写体数字方法
Jan 30 Python
Python操作MySQL模拟银行转账
Mar 12 Python
Flask实现跨域请求的处理方法
Sep 27 Python
如何用C代码给Python写扩展库(Cython)
May 17 Python
使用Python实现文字转语音并生成wav文件的例子
Aug 08 Python
python中树与树的表示知识点总结
Sep 14 Python
Python中Flask-RESTful编写API接口(小白入门)
Dec 11 Python
在Python 的线程中运行协程的方法
Feb 24 Python
关于Kotlin中SAM转换的那些事
Sep 15 Python
Django多个app urls配置代码实例
Nov 26 Python
如何获取numpy array前N个最大值
May 14 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
火影忍者:这才是千手柱间和扉间的真正死因,角都就比较搞笑了!
2020/03/10 日漫
php文件操作之小型留言本实例
2015/06/20 PHP
php 如何禁用eval() 函数实例详解
2016/12/01 PHP
PHP实现搜索时记住状态的方法示例
2018/05/11 PHP
Ajax同步与异步传输的示例代码
2013/11/21 Javascript
JS表的模拟方法
2015/02/05 Javascript
JavaScript常用的弹出广告及背投广告实现方法
2015/02/06 Javascript
firefox浏览器用jquery.uploadify插件上传时报HTTP 302错误
2015/03/01 Javascript
60行js代码实现俄罗斯方块
2015/03/31 Javascript
Ajax使用原生态JS验证用户名是否存在
2020/05/26 Javascript
JS判断浏览器是否安装flash插件的简单方法
2016/09/13 Javascript
从零开始最小实现react服务器渲染详解
2018/01/26 Javascript
webpack4 css打包压缩问题的解决
2018/05/18 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
python实现端口转发器的方法
2015/03/13 Python
Python多线程编程(一):threading模块综述
2015/04/05 Python
Python利用Beautiful Soup模块修改内容方法示例
2017/03/27 Python
Python中异常重试的解决方案详解
2017/05/05 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
10个Python小技巧你值得拥有
2018/09/29 Python
numpy给array增加维度np.newaxis的实例
2018/11/01 Python
详解python pandas 分组统计的方法
2019/07/30 Python
Django实现文章详情页面跳转代码实例
2020/09/16 Python
俄罗斯外国汽车和国产汽车配件网上商店:Движком
2020/04/19 全球购物
甜点店创业计划书
2014/01/27 职场文书
给校长的建议书200字
2014/05/16 职场文书
企业党员个人自我评价
2014/09/20 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
普通党员个人剖析材料
2014/10/08 职场文书
思想政治表现评语
2015/01/04 职场文书
劳动仲裁撤诉申请书
2015/05/18 职场文书
初中物理教学反思
2016/02/19 职场文书
学校就业保障协议书
2019/06/24 职场文书
Python编写可视化界面的全过程(Python+PyCharm+PyQt)
2021/05/17 Python