Requests库整理
一、Requests库的安装
win平台下,直接在命令行使用
pip install requests
即可进行安装
成功后测试如下
>>> import requests
>>> r = requests.get('https://www.baidu.com')
>>> print(r.status_code)
200
>>> r.text
'<!DOCTYPE html>\r\n<!--STATUS OK--><html>
二、Requests库的七个主要方法
- requests.requests() 用于构造一个请求,支撑以下各方法的基础方法
- requests.get() 获取HTML网页的主要方法,对应于HTTP的GET
- requests.head() 获取HTML网页头信息的方法,对应于HTTP的HEAD
- requests.post() 向HTML网页提交POST请求的方法,对应于HTTP的POST
- requests.put() 向HTML网页提交PUT请求的方法,对应于HTTP的PUT
- requests.patch() 向HTML网页提交局部修改请求,对应于HTTP的PATCH
- requests.delete() 向HTML页面提交删除请求,对应于HTTP的DELETE
三、Requests库的get()方法
get()方法是最常用的方法
requests.get(url,params=None, **kwargs)
其中:
- url:想要获取的网页url
- params: url中的额外参数,字典或字节流格式,如kw = {'wd': 'baidu'}, requests.get('https://www.baidu.com', kw),其中访问的地址是https://www.baidu.com/?wd=baidu, 可选参数
- **kwargs: 12个控制访问的参数(较为少用)
四、两个重要的对象:Request和Response
对于r = requests.get(url), 其实是先构造了一个向服务器请求资源的Request对象,然后返回一个包含服务器资源的Response对象
PS:其实在requests库的源码中可以得知get是对request方法进行了封装
Response对象基本的属性:
- r.status_code HTTP请求的返回状态,200表示连接成功,404表示失败
- r.headers 返回Response对象的头部信息
- r.text HTTP响应内容的字符串形式,即,url对应的页面内容
- r.encoding 从HTTP header中猜测的响应内容编码方式
- r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式)
- r.content HTTP响应内容的二进制形式
有一点需要注意:如果在header中不存在charset,这认为编码为ISO‐8859‐1,r.encoding将为这个编码
r.apparent_encoding为程序根据网页内容分析出的编码,若网页编码已知的话,可以省略对此处进行一点小小的优化
五、异常
Requests库的异常
- requests.ConnectionError 网络连接错误异常,如DNS查询失败、拒绝连接等
- requests.HTTPError HTTP错误异常
- requests.URLRequired URL缺失异常
- requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
- requests.ConnectTimeout 连接远程服务器超时异常
- requests.Timeout 请求URL超时,产生超时异常
Response类的异常
r.raise_for_status() 如果不是200 这抛出异常requests.HTTPError,便于对异常的处理
-------
本文整理自嵩天老师的python系列课程,如有错误,还请斧正
Requests库整理的更多相关文章
- urllib、requests库整理
- python 常用库整理
python 常用库整理 GUI 图形界面 Tkinter: Tkinter wxPython:wxPython pyGTK:PyGTK pyQt:pyQt WEB框架 django:django w ...
- 人生苦短之HTTP协议及Requests库的方法
requests库的主要方法:requests.request()构造一个请求 requests.get()获取HTML网页的主要方法,对应于HTTP的GET requests.head( ...
- Python常用库整理
Python常用库整理 Python中到底有哪些库会让程序员爱不释手?以至于一次上瘾,造成永久性伤害(这句话好像在哪里见过),今天我们就来整理一番这样的库,欢迎各位在评论区或者私信我添加或者修改相关库 ...
- Python爬虫小白入门(二)requests库
一.前言 为什么要先说Requests库呢,因为这是个功能很强大的网络请求库,可以实现跟浏览器一样发送各种HTTP请求来获取网站的数据.网络上的模块.库.包指的都是同一种东西,所以后文中可能会在不同地 ...
- Requests库上传文件时UnicodeDecodeError: 'ascii' codec can't decode byte错误解析
在使用Request上传文件的时候碰到如下错误提示: 2013-12-20 20:51:09,235 __main__ ERROR 'ascii' codec can't decode byte 0x ...
- Requests库的几种请求 - 通过API操作Github
本文内容来源:https://www.dataquest.io/mission/117/working-with-apis 本文的数据来源:https://en.wikipedia.org/wiki/ ...
- python脚本实例002- 利用requests库实现应用登录
#! /usr/bin/python # coding:utf-8 #导入requests库 import requests #获取会话 s = requests.session() #创建登录数据 ...
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ...
随机推荐
- leetcode并发题目解题报告JAVA版
一.Print in Order Suppose we have a class: public class Foo { public void first() { print("first ...
- 夯实Java基础(四)——面向对象之多态
1.多态介绍 面向对象三大特征:封装.继承.多态.多态是Java面向对象最核心,最难以理解的内容.从一定角度来看,封装和继承几乎都是为多态而准备的. 多态就是指程序中定义的引用变量所指向的具体类型和通 ...
- Java下载文件方法
public static void download(String path, HttpServletResponse response) { try { // path是指欲下载的文件的路径. F ...
- Go中的interface学习
学过Java的同学都知道在Java中接口更像是一种规范,用接口定义了一组方法,下面实现这个接口的类只管按照写好的方法名和返回值去实现就好,内部如何实现是各个方法自己的事情,接口本身不关注. 另外Jav ...
- IDEA运行报错: Maven编译错误:不再支持源选项 5。请使用 6 或更高版本
这里 记录下 这个问题的解决方案: 1:修改maven settings.xml 中的数据 这里的版本要对应现在使用的jdk版本 2:检查idea 配置 图中2块区域要一致 检查这块地方对应了自己的j ...
- 体验使用MUI上手练习app页面开发
因为公司安排需要先学习一点app开发,而安排学习的框架就是MUI,上手两天体验还算可以(来自后端人员的懵逼),靠着MUI的快捷键可以快速的完成自己想要的样式模板,更多的交互性的内容则需要使用js来完成 ...
- ABAP 金额转换成大写
FUNCTION zzfi_change_amount.*"---------------------------------------------------------------- ...
- 如何使用WorkManager执行后台任务(上)
0x00 简述 WorkManager 是 Android Jetpack中的一部分,它主要是封装了 Android 后台任务的调度逻辑.在前文<Android后台任务处理指南>一文中知道 ...
- [FJOI2015]火星商店问题(线段树分治,可持久化,Trie树)
[FJOI2015]火星商店问题 前天考了到线段树分治模板题,全场都切了,就我不会QAQ 于是切题无数的Tyher巨巨就告诉我:"你可以去看看火星商店问题,看了你就会了." 第一道 ...
- Java 8 为什么会引入lambda 表达式?
Java 8 为什么会引入lambda ? 在Java8出现之前,如果你想传递一段代码到另一个方法里是很不方便的.你几乎不可能将代码块到处传递,因为Java是一个面向对象的语言,因此你要构建一个属于某 ...