详解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简单获取自身外网IP的方法
Sep 18 Python
Python编程之event对象的用法实例分析
Mar 23 Python
Python搜索引擎实现原理和方法
Nov 27 Python
Java编程迭代地删除文件夹及其下的所有文件实例
Feb 10 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
python消除序列的重复值并保持顺序不变的实例
Nov 08 Python
浅谈python的dataframe与series的创建方法
Nov 12 Python
Python动态赋值的陷阱知识点总结
Mar 17 Python
pyqt5 实现工具栏文字图片同时显示
Jun 13 Python
Python第三方库的几种安装方式(小结)
Apr 03 Python
解决python的空格和tab混淆而报错的问题
Feb 26 Python
关于Python使用turtle库画任意图的问题
Apr 01 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
一个oracle+PHP的查询的例子
2006/10/09 PHP
Fixie.js 自动填充内容的插件
2012/06/28 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
jQuery 回车事件enter使用示例
2014/02/18 Javascript
Javascript基础教程之for循环
2015/01/18 Javascript
JavaScript对数字的判断与处理实例分析
2015/02/02 Javascript
jquery form表单获取内容以及绑定数据
2016/02/24 Javascript
BootStrap 导航条实例代码
2017/05/18 Javascript
详解angularjs中如何实现控制器和指令之间交互
2017/05/31 Javascript
zTree节点文字过多的处理方法
2017/11/24 Javascript
微信小程序中吸底按钮适配iPhone X方案
2017/11/29 Javascript
3种vue路由传参的基本模式
2018/02/22 Javascript
详解Vue单元测试case写法
2018/05/24 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
Element-ui DatePicker显示周数的方法示例
2019/07/19 Javascript
layui.tree组件的使用以及搜索节点功能的实现
2019/09/26 Javascript
Vue页面刷新记住页面状态的实现
2019/12/27 Javascript
js键盘事件实现人物的行走
2020/01/17 Javascript
[56:24]DOTA2上海特级锦标赛主赛事日 - 3 胜者组第二轮#1Liquid VS MVP.Phx第二局
2016/03/04 DOTA
[01:38]2018DOTA2亚洲邀请赛主赛事第二日现场采访 神秘商人痛陈生计不易
2018/04/05 DOTA
python列表与元组详解实例
2013/11/01 Python
用Python输出一个杨辉三角的例子
2014/06/13 Python
python处理大数字的方法
2015/05/27 Python
Python扫描IP段查看指定端口是否开放的方法
2015/06/09 Python
python中pytest收集用例规则与运行指定用例详解
2019/06/27 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
与Django结合利用模型对上传图片预测的实例详解
2019/08/07 Python
Python稀疏矩阵及参数保存代码实现
2020/04/18 Python
python实现126邮箱发送邮件
2020/05/20 Python
在python中对于bool布尔值的取反操作
2020/12/11 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
党委班子剖析材料
2014/08/21 职场文书
2014年环保局工作总结
2014/12/11 职场文书
幼儿园小班开学寄语
2015/05/27 职场文书
解决pycharm安装scrapy DLL load failed:找不到指定的程序的问题
2021/06/08 Python