详解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的Flask中使用WTForms表单框架的基础教程
Jun 07 Python
python中os模块详解
Oct 14 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
Python中GeoJson和bokeh-1的使用讲解
Jan 03 Python
python3转换code128条形码的方法
Apr 17 Python
python调试神器PySnooper的使用
Jul 03 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
使用python实现CGI环境搭建过程解析
Apr 28 Python
Python内置函数及功能简介汇总
Oct 13 Python
python读写数据读写csv文件(pandas用法)
Dec 14 Python
python ansible自动化运维工具执行流程
Jun 24 Python
python读取mnist数据集方法案例详解
Sep 04 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
ubuntu10.04配置 nginx+php-fpm模式的详解
2013/06/03 PHP
php遍历所有文件及文件夹的方法深入解析
2013/06/08 PHP
Yii中render和renderPartial的区别
2014/09/03 PHP
利用Homestead快速运行一个Laravel项目的方法详解
2017/11/14 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
jQuery 1.5 源码解读 面向中高阶JSER
2011/04/05 Javascript
Javascript图像处理—为矩阵添加常用方法
2012/12/27 Javascript
在myeclipse中如何加入jquery代码提示功能
2014/06/03 Javascript
原生javascript实现的分页插件pagenav
2014/08/28 Javascript
JavaScript设置body高度为浏览器高度的方法
2015/02/09 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
基于JS实现横线提示输入验证码随验证码输入消失(js验证码的实现)
2016/10/27 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
详解如何在Vue2中实现组件props双向绑定
2017/03/29 Javascript
vue router下的html5 history在iis服务器上的设置方法
2017/10/18 Javascript
vue组件传递对象中实现单向绑定的示例
2018/02/28 Javascript
如何能分清npm cnpm npx nvm
2019/01/17 Javascript
用python删除java文件头上版权信息的方法
2014/07/31 Python
Python学习笔记整理3之输入输出、python eval函数
2015/12/14 Python
Python3 循环语句(for、while、break、range等)
2017/11/20 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
python实现PID算法及测试的例子
2019/08/08 Python
opencv转换颜色空间更改图片背景
2019/08/20 Python
Python 实现毫秒级淘宝抢购脚本的示例代码
2019/09/16 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
离线状态下在jupyter notebook中使用plotly实例
2020/04/24 Python
python3从网络摄像机解析mjpeg http流的示例
2020/11/13 Python
Marmot土拨鼠官网:美国专业户外运动品牌
2018/01/11 全球购物
美国办公用品折扣网站:Shoplet.com
2019/11/24 全球购物
30年同学聚会感言
2014/01/30 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
酒店工程部主管岗位职责
2015/04/16 职场文书
给男朋友的道歉短信
2015/05/12 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server