# 这是学习廖雪峰老师python教程的学习笔记

相比于Python内置的urllib模块,使用requests可以更好地处理URL资源。

1、使用requests

1)通过GET访问一个页面

>>> import requests

>>> r = requests.get('https://www.douban.com/') # 豆瓣首页

>>> r.status_code

200

>>> r.text

r.text

'<!DOCTYPE HTML>\n<html>\n<head>\n<meta name="description" content="提供图书、电影、音乐唱片的推荐、评论和...'

2)对于带参数的URL,传入一个dict作为params参数:

>>> r = requests.get('https://www.douban.com/search', params={'q': 'python', 'cat': '1001'})

>>> r.url  # 我们实际请求的URL

'https://www.douban.com/search?q=python&cat=1001'

3)requests自动检测编码,可以使用encoding属性查看

>>> r.encoding

'utf-8'

4)无论响应是文本还是二进制内容,我们都可以用content属性获得bytes对象

>>> r.content

b'<!DOCTYPE html>\n<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=utf-8">\n...'

4)对于特定类型的响应,例如JSON,可以直接获取

>>> r = requests.get('https://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20weather.forecast%20where%20woeid%20%3D%202151330&format=json')

>>> r.json()

{'query': {'count': 1, 'created': '2017-11-17T07:14:12Z', …

5)需要传入HTTP Header时,我们传入一个dict作为headers参数:

>>> r = requests.get('https://www.douban.com/', headers={'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit'})

>>> r.text

'<!DOCTYPE html>\n<html>\n<head>\n<meta charset="UTF-8">\n <title>豆瓣(手机版)</title>...'

6)发送POST请求,只需要把get()方法变成post(),然后传入data参数作为POST请求的数据

>>> r = requests.post('https://accounts.douban.com/login', data={'form_email': 'abc@example.com', 'form_password': '123456'})

把post()方法替换为put(),delete()等,就可以以PUT或DELETE方式请求资源

7)requests默认使用application/x-www-form-urlencoded对POST数据编码。如果要传递JSON数据,可以直接传入json参数

params = {'key': 'value'}

r = requests.post(url, json=params) # 内部自动序列化为JSON

8)上传文件需要更复杂的编码格式,但是requests把它简化成files参数

>>> upload_files = {'file': open('report.xls', 'rb')} #注意标示符b,这样获取的bytes长度才是文件的长度

>>> r = requests.post(url, files=upload_files)

9)获取响应头

>>> r.headers

{Content-Type': 'text/html; charset=utf-8', 'Transfer-Encoding': 'chunked', 'Content-Encoding': 'gzip', ...}

>>> r.headers['Content-Type']

'text/html; charset=utf-8'

10)获取指定的Cookie

>>> cs = {'token': '12345', 'status': 'working'}

>>> r = requests.get(url, cookies=cs)

11)要指定超时,传入以秒为单位的timeout参数

>>> r = requests.get(url, timeout=2.5) # 2.5秒后超时

转载于:https://blog.51cto.com/12758568/2117156

Python学习笔记__13.2章 requests相关推荐

  1. 【Python学习笔记】第一章基础知识:格式化输出,转义字符,变量类型转换,算术运算符,运算符优先级和赋值运算符,逻辑运算符,世界杯案例题目,条件判断if语句,猜拳游戏与三目运算符

    Python学习笔记之[第一章]基础知识 前言: 一.格式化输出 1.基本格式: 2.练习代码: 二.转义字符 1.基本格式: 2.练习代码: 3.输出结果: 三.输入 1.基本格式: 2.练习代码: ...

  2. Python学习笔记__6.1章 类和实例

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 面向对象最重要的概念就是类(Class)和实例(Instance),必须牢记类是抽象的模板,比如Student类,而实例是根据类创建出来的一 ...

  3. Python学习笔记__1.5章 循环

    # 这是学习廖雪峰老师python教程的学习笔记 1.for循环遍历 1.遍历名字 names = ['Michael', 'Bob', 'Tracy'] for name in names: pri ...

  4. Python学习笔记__4.1章 高阶函数

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们知道Python内置的求绝对值的函数是abs() # 调用abs()函数可以获得一个值 >>> abs(-10) 10 ...

  5. Python学习笔记__10.4章 进程VS线程

    # 这是学习廖雪峰老师python教程的学习笔记 1.概览 我们介绍了多进程和多线程,这是实现多任务最常用的两种方式.现在,我们来讨论一下这两种方式的优缺点 要实现多任务,通常我们会设计Master- ...

  6. Python学习笔记——爬虫原理与Requests数据抓取

    目录 为什么要做网络爬虫? 通用爬虫和聚焦爬虫 HTTP和HTTPS 客户端HTTP请求 请求方法 HTTP请求主要分为Get和Post两种方法 常用的请求报头 1. Host (主机和端口号) 2. ...

  7. Head First Python 学习笔记(第二章:分享你的代码)

    共享你的代码 Python提供了一组技术,可以很容易地实现共享,这包括模块和一些发布工具: 模块允许你合力组织代码来实现最优共享. 发布工具允许你向全世界共享你的模块. 函数转换为模块 1.把第一章中 ...

  8. 深度之眼 - Python学习笔记——第四章 组合数据类型

    第四章 组合数据类型 4.1 列表 列表是可变的! 4.1.1 列表的表达 序列类型:内部元素有位置关系,能通过位置序号访问其中元素 列表是一个可以使用多种类型元素,支持元素的增.删.查.改操作的序列 ...

  9. Python学习笔记 ---第三章

    函数 函数是代码的一种抽象 函数 说明 abs 绝对值 max 最大值 hex 转换为16进制 强制数据类型转换 int('123') 123 int(12.35) 12 srt(100) '100' ...

最新文章

  1. 【实用】Angular中如何实现类似Vuex的全局变量状态变化功能?
  2. 阿里巴巴持续投入,etcd 正式加入 CNCF
  3. 基于SSM实现小区物业管理系
  4. 17. 搭建FTP服务端
  5. linux 网卡配置不一致,linux环境下,双网卡配置不同网段后,路由问题
  6. 【数据结构与算法】之深入解析“两数相除”的求解思路与算法示例
  7. Android之开发者应该收藏的优秀博客和技术网站
  8. 第一个发现我嫂子有喜的竟然是......
  9. 2014-10-22 NOIP模拟赛
  10. Socket套接字实现服务器端连接
  11. mp.weixin.php,GitHub - temberature/mp-php-sdk: 微信公众平台第三方授权php开发包, weixin mp developer SDK....
  12. Java 继承——3
  13. 尝试自动重定向的次数太多_阿里Arthas 3.1.0版本:在线教程、内存编译器和强大的自动补全...
  14. Git------GitHub官网
  15. 【渝粤题库】陕西师范大学210007 幼儿园音乐教育 作业(高起专)
  16. android fastboot 最新版,Android fastboot USB 驱动下载2012最新版_支持所有HTC Android平台...
  17. 数学建模算法与应用(一)线性规划
  18. “终端服务临时客户端许可证过期”的解决方法
  19. catia中的螺旋伞齿轮画法,基于CATIA的螺旋锥齿轮参数化建模方法研究
  20. 英语写作技巧 ——“李靖“

热门文章

  1. zeptojs-跑马灯效果
  2. 2003 DHCP升级到2008 DHCP
  3. 巨潮网怎么下载年报_上海注册公司后如何下载电子营业执照
  4. 当下常用的webpack版本_细说 webpack系列 1. 为什么要选择 webpack
  5. 零基础 8 周掌握 Python,成为全能人才!
  6. 应用随机过程张波商豪_Markov链的应用一:MCMC算法
  7. Awk 实战详解教程
  8. redis java 存储图片_Redis 存储图片 [base64/url/path]vs[object]
  9. 微电子科学与工程要学计算机吗,微电子科学与工程专业适合女生学习吗
  10. HDU3949(线性基算法模版)