详解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 相关文章推荐
在Django的视图(View)外使用Session的方法
Jul 23 Python
详解Python中的元组与逻辑运算符
Oct 13 Python
将Emacs打造成强大的Python代码编辑工具
Nov 20 Python
PyQt5每天必学之像素图控件QPixmap
Apr 19 Python
win10 64bit下python NLTK安装教程
Sep 19 Python
浅谈python标准库--functools.partial
Mar 13 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
Jun 19 Python
Python算法的时间复杂度和空间复杂度(实例解析)
Nov 19 Python
django框架auth模块用法实例详解
Dec 10 Python
浅谈tensorflow中dataset.shuffle和dataset.batch dataset.repeat注意点
Jun 08 Python
实例讲解Python 迭代器与生成器
Jul 08 Python
python_tkinter弹出对话框创建
Mar 20 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/02/15 PHP
mysql From_unixtime及UNIX_TIMESTAMP及DATE_FORMAT日期函数
2010/03/21 PHP
php使用异或实现的加密解密实例
2013/09/04 PHP
一个简单且很好用的php分页类
2013/10/26 PHP
php去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
Yii框架Session与Cookie使用方法示例
2019/10/14 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
html的DOM中document对象images集合用法实例
2015/01/21 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
页面内容排序插件jSort使用方法
2015/10/10 Javascript
javascript适合移动端的日期时间拾取器
2015/11/10 Javascript
基于BootStrap Metronic开发框架经验小结【一】框架总览及菜单模块的处理
2016/05/12 Javascript
jQuery EasyUI右键菜单实现关闭标签/选项卡
2016/10/10 Javascript
js正则表达式最长匹配(贪婪匹配)和最短匹配(懒惰匹配)用法分析
2016/12/27 Javascript
Vue.js实战之Vuex的入门教程
2017/04/01 Javascript
vue过渡和animate.css结合使用详解
2017/06/14 Javascript
关于Vue实现组件信息的缓存问题
2017/08/23 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
Vue实现仿iPhone悬浮球的示例代码
2020/03/13 Javascript
Element Collapse 折叠面板的使用方法
2020/07/26 Javascript
vue+echarts实现动态折线图的方法与注意
2020/09/01 Javascript
构建一个JavaScript插件系统
2020/10/20 Javascript
浅析vue中的nextTick
2020/12/28 Vue.js
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Python通过matplotlib绘制动画简单实例
2017/12/13 Python
python的pandas工具包,保存.csv文件时不要表头的实例
2018/06/14 Python
python http基本验证方法
2018/12/26 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
python实现两张图片拼接为一张图片并保存
2019/07/16 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
化工操作工岗位职责
2014/04/29 职场文书
语文教研活动总结
2014/07/02 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
Python 文本滚动播放器的实现代码
2021/04/25 Python