详解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 相关文章推荐
写了个监控nginx进程的Python脚本
May 10 Python
python实现文件名批量替换和内容替换
Mar 20 Python
python 爬虫出现403禁止访问错误详解
Mar 11 Python
手把手教你python实现SVM算法
Dec 27 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
对python中 math模块下 atan 和 atan2的区别详解
Jan 17 Python
基于Python实现人脸自动戴口罩系统
Feb 06 Python
Django的ListView超详细用法(含分页paginate)
May 21 Python
查看keras各种网络结构各层的名字方式
Jun 11 Python
Python+Selenium随机生成手机验证码并检查页面上是否弹出重复手机号码提示框
Sep 21 Python
Python面向对象编程之类的概念
Nov 01 Python
python绘制云雨图raincloud plot
Aug 05 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
Get或Post提交值的非法数据处理
2006/10/09 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
php实现比较全的数据库操作类
2015/06/18 PHP
JQuery 学习笔记 选择器之三
2009/07/23 Javascript
javascript通过class来获取元素实现代码
2013/02/20 Javascript
js中传递特殊字符(+,&amp;)的方法
2014/01/16 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
2016/03/01 Javascript
JS中静态页面实现微信分享功能
2017/02/06 Javascript
基于JavaScript实现新增内容滚动播放效果附完整代码
2017/08/24 Javascript
jQuery实现注册会员时密码强度提示信息功能示例
2017/09/05 jQuery
妙用缓存调用链实现JS方法的重载
2018/04/30 Javascript
JS Thunk 函数的含义和用法实例总结
2020/04/08 Javascript
JS+JQuery实现无缝连接轮播图
2020/12/30 jQuery
Python 的 with 语句详解
2014/06/13 Python
浅析Python中的赋值和深浅拷贝
2017/08/15 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
python脚本实现验证码识别
2018/06/07 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
2019/03/05 Python
网易2016研发工程师编程题 奖学金(python)
2019/06/19 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
浅谈Pytorch中的自动求导函数backward()所需参数的含义
2020/02/29 Python
python Matplotlib基础--如何添加文本和标注
2021/01/26 Python
北美三大旅游网站之一:Travelocity加拿大
2016/08/20 全球购物
FirstCry阿联酋儿童和婴儿产品网上购物:FirstCry.ae
2021/02/22 全球购物
结构和类有什么异同
2012/07/16 面试题
善意的谎言事例
2014/02/15 职场文书
婚礼主持结束词
2014/03/13 职场文书
学校交通安全责任书
2014/08/25 职场文书
党员自我评议个人对照检查材料
2014/09/16 职场文书
2014党的群众路线教育实践活动总结材料
2014/10/31 职场文书
四年级小学生评语
2014/12/26 职场文书
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
MySQL8.0的WITH查询详情
2021/08/30 MySQL