详解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中atexit模块的基本使用示例
Jul 08 Python
python制作爬虫并将抓取结果保存到excel中
Apr 06 Python
Python3实现发送QQ邮件功能(附件)
Dec 23 Python
python print 按逗号或空格分隔的方法
May 02 Python
搭建python django虚拟环境完整步骤详解
Jul 08 Python
Python全栈之列表数据类型详解
Oct 01 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python使用指定字符长度切分数据示例
Dec 05 Python
python正则表达式实例代码
Mar 03 Python
Python Django view 两种return的实现方式
Mar 16 Python
解决python脚本中error: unrecognized arguments: True错误
Apr 20 Python
python生成word合同的实例方法
Jan 12 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.MVC的模板标签系统(三)
2006/09/05 PHP
php select,radio和checkbox默认选择的实现方法
2010/05/15 PHP
《PHP编程最快明白》第六讲:Mysql数据库操作
2010/11/01 PHP
php中flush()、ob_flush()、ob_end_flush()的区别介绍
2013/02/17 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
Javascript 表单之间的数据传递代码
2008/12/04 Javascript
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
2011/04/12 Javascript
使用Chrome调试JavaScript的断点设置和调试技巧
2014/12/16 Javascript
跟我学习javascript的call(),apply(),bind()与回调
2015/11/16 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
原生JS获取元素集合的子元素宽度实例
2016/12/14 Javascript
ionic2中使用自动生成器的方法
2018/03/04 Javascript
webpack4+Vue搭建自己的Vue-cli项目过程分享
2018/08/29 Javascript
浅谈vue同一页面中拥有两个表单时,的验证问题
2018/09/18 Javascript
对angular4子路由&amp;辅助路由详解
2018/10/09 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
手淘flexible.js框架使用和源代码讲解小结
2018/10/15 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
ElementUI Tree 树形控件的使用并给节点添加图标
2020/02/27 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
JavaScript判断数据类型有几种方法及区别介绍
2020/09/02 Javascript
Python下使用Psyco模块优化运行速度
2015/04/05 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python Json序列化与反序列化的示例
2018/01/31 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Python爬虫爬取、解析数据操作示例
2020/03/27 Python
法国奢华女性时尚配饰网上商店:Monnier Frères
2016/08/27 全球购物
节约用水倡议书
2014/04/16 职场文书
见习报告的格式
2014/11/04 职场文书
升学宴学生答谢词
2015/01/05 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
利用ajax+php实现商品价格计算
2021/03/31 PHP
Python数据可视化之基于pyecharts实现的地理图表的绘制
2021/06/10 Python
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫