详解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基于pygame实现的font游戏字体(附源码)
Nov 11 Python
python实现mysql的单引号字符串过滤方法
Nov 14 Python
python黑魔法之参数传递
Feb 12 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
python for循环输入一个矩阵的实例
Nov 14 Python
Python数据抓取爬虫代理防封IP方法
Dec 23 Python
python调用外部程序的实操步骤
Mar 04 Python
Pycharm连接远程服务器并实现远程调试的实现
Aug 02 Python
python 定义类时,实现内部方法的互相调用
Dec 25 Python
Python如何把Spark数据写入ElasticSearch
Apr 18 Python
django中嵌套的try-except实例
May 21 Python
Python实现自动装机功能案例分析
Oct 22 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
Laravel 5.0 发布 新版本特性详解
2015/02/10 PHP
PHP标准类(stdclass)用法示例
2016/09/28 PHP
JS 密码强度验证(兼容IE,火狐,谷歌)
2010/03/15 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
javascript控制层显示或隐藏的方法
2015/07/22 Javascript
Angular Js文件上传之form-data
2015/08/28 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
AngularJs Javascript MVC 框架
2016/06/20 Javascript
JS自定义函数实现时间戳转换成date的方法示例
2017/08/27 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
Vue+ElementUI实现表单动态渲染、可视化配置的方法
2018/03/07 Javascript
vue mint-ui tabbar变组件使用
2018/05/04 Javascript
angular学习之动态创建表单的方法
2018/12/07 Javascript
微信小程序全局变量功能与用法详解
2019/01/22 Javascript
使用Python多线程爬虫爬取电影天堂资源
2016/09/23 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
Python实现计算图像RGB均值方式
2020/06/04 Python
为什么说python适合写爬虫
2020/06/11 Python
python中操作文件的模块的方法总结
2021/02/04 Python
关于html字符串正则判断和匹配的具体使用
2019/12/12 HTML / CSS
Agoda.com官方网站:便宜预订全球酒店,高达80%的折扣
2018/04/04 全球购物
澳大利亚最大的百货公司:Myer
2018/12/21 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
小学教师师德感言
2014/02/10 职场文书
房产公证书范本
2014/04/10 职场文书
解除聘用合同证明书范本
2014/09/11 职场文书
平安家庭事迹材料
2014/12/20 职场文书
酒店收银员岗位职责
2015/04/07 职场文书
建筑质检员岗位职责
2015/04/08 职场文书
工程项目合作意向书
2015/05/08 职场文书
单位计划生育责任书
2015/05/09 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
评奖评优个人先进事迹材料
2015/11/04 职场文书
单机多实例部署 MySQL8.0.20
2022/05/15 MySQL