详解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的装饰器解决Bottle框架中用户验证问题
Apr 24 Python
如何处理Python3.4 使用pymssql 乱码问题
Jan 08 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
python利用thrift服务读取hbase数据的方法
Dec 27 Python
Python datetime和unix时间戳之间相互转换的讲解
Apr 01 Python
浅析PyTorch中nn.Module的使用
Aug 18 Python
python实现代码统计程序
Sep 19 Python
Python日期格式和字符串格式相互转换的方法
Feb 18 Python
Python多线程Threading、子线程与守护线程实例详解
Mar 24 Python
python+requests接口压力测试500次,查看响应时间的实例
Apr 30 Python
Python如何使用logging为Flask增加logid
Mar 30 Python
pytorch--之halfTensor的使用详解
May 24 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 上传功能实例代码
2010/04/13 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
PHP基础知识介绍
2013/09/17 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
jQuery帮助之CSS尺寸(五)outerHeight、outerWidth
2009/11/14 Javascript
javascript获取URL参数与参数值的示例代码
2013/12/20 Javascript
探寻Javascript执行效率问题
2014/11/12 Javascript
Angularjs 基础入门
2014/12/26 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
Bootstrap学习笔记之css样式设计(1)
2016/06/07 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
String字符串截取的四种方式总结
2016/11/28 Javascript
canvas绘制环形进度条
2017/02/23 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
Angular中的interceptors拦截器
2017/06/25 Javascript
javascript  删除select中的所有option的实例
2017/09/17 Javascript
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
用node开发并发布一个cli工具的方法步骤
2019/01/03 Javascript
webpack的pitching loader详解
2019/09/23 Javascript
[01:50]《我与DAC》之玩家:iG夺冠时的那面红旗
2018/03/29 DOTA
[00:32]2018DOTA2亚洲邀请赛OpTic出场
2018/04/03 DOTA
Windows下Python使用Pandas模块操作Excel文件的教程
2016/05/31 Python
利用python打印出菱形、三角形以及矩形的方法实例
2017/08/08 Python
python 识别图片中的文字信息方法
2018/05/10 Python
Python根据成绩分析系统浅析
2019/02/11 Python
django富文本编辑器的实现示例
2019/04/10 Python
Python实现的栈、队列、文件目录遍历操作示例
2019/05/06 Python
python设置环境变量的作用整理
2020/02/17 Python
Python flask框架端口失效解决方案
2020/06/04 Python
Python使用Chrome插件实现爬虫过程图解
2020/06/09 Python
美国在线印刷公司:PsPrint
2017/10/12 全球购物
房地产营销策划方案
2014/02/08 职场文书
《九色鹿》教学反思
2014/02/27 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
2015迎新晚会活动总结
2015/07/16 职场文书
MySql重置root密码 --skip-grant-tables
2022/04/11 MySQL