详解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的Django框架生成PDF文件的教程
Jul 22 Python
快速入手Python字符编码
Aug 03 Python
用yum安装MySQLdb模块的步骤方法
Dec 15 Python
用virtualenv建立多个Python独立虚拟开发环境
Jul 06 Python
python利用正则表达式搜索单词示例代码
Sep 24 Python
利用Python+阿里云实现DDNS动态域名解析的方法
Apr 01 Python
python list转置和前后反转的例子
Aug 26 Python
Python+Redis实现布隆过滤器
Dec 08 Python
python读取Kafka实例
Dec 23 Python
tensorflow 报错unitialized value的解决方法
Feb 06 Python
python json load json 数据后出现乱序的解决方案
Feb 27 Python
深入了解Python装饰器的高级用法
Aug 13 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实现按指定大小等比缩放生成上传图片缩略图的方法
2014/12/15 PHP
PHP如何使用Memcached
2016/04/05 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
javascript+dom树型菜单类,希望朋友们一起进步
2007/05/03 Javascript
javaScript 关闭浏览器 (不弹出提示框)
2010/01/31 Javascript
javascript onmouseout 解决办法
2010/07/17 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
Jquery中offset()和position()的区别分析
2015/02/05 Javascript
教你如何终止JQUERY的$.AJAX请求
2016/02/23 Javascript
JQuery 传送中文乱码问题的简单解决办法
2016/05/24 Javascript
js实现表单提交后不重新刷新当前页面
2016/11/30 Javascript
Vue.js 插件开发详解
2017/03/29 Javascript
AngularJS入门教程二:在路由中传递参数的方法分析
2017/05/27 Javascript
Ionic2开发环境搭建教程
2020/08/20 Javascript
jQuery Validate格式验证功能实例代码(包括重名验证)
2017/07/18 jQuery
layui之table checkbox初始化时选中对应选项的方法
2019/09/02 Javascript
Vue是怎么渲染template内的标签内容的
2020/06/05 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
antd form表单数据回显操作
2020/11/02 Javascript
[01:02:46]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
使用Python的PIL模块来进行图片对比
2016/02/18 Python
详解Python命令行解析工具Argparse
2016/04/20 Python
使用Eclipse如何开发python脚本
2018/04/11 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
python2.7的flask框架之引用js&amp;css等静态文件的实现方法
2019/08/22 Python
Python数据可视化:幂律分布实例详解
2019/12/07 Python
css3弹性盒模型实例介绍
2013/05/27 HTML / CSS
lululemon美国官网:瑜伽服+跑步装备
2018/11/16 全球购物
怎样在程序里获得一个空指针
2015/01/24 面试题
协议书样本
2014/04/23 职场文书
让世界充满爱演讲稿
2014/05/24 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
大学生就业意向书
2015/05/11 职场文书
七年级作文之秋游
2019/10/21 职场文书
python中os.path.join()函数实例用法
2021/05/26 Python
Windows和Linux上部署Golang并运行程序
2022/04/22 Servers