Python Requests库简单入门
我对Python网络爬虫的学习主要是基于中国慕课网上嵩天老师的讲授,写博客的目的是为了更好触类旁通,并且作为学习笔记之后复习回顾。
1.引言
requests 库是一个简洁且简单的处理HTTP请求的第三方库。
requests的最大优点是程序编写过程更接近正常URL 访问过程。
这个库建立在Python 语言的urllib3 库基础上,类似这种在其他函数库之上再封装功能提供更友好函数的方式在Python 语言中十分常见。在Python 的生态圈里,任何人都有通过技术创新或体验创新发表意见和展示才华的机会。
request 库支持非常丰富的链接访问功能,包括:国际域名和URL 获取、HTTP 长连接和连接缓存、HTTP 会话和Cookie 保持、浏览器使用风格的SSL 验证、基本的摘要认证、有效的键值对Cookie 记录、自动解压缩、自动内容解码、文件分块上传、HTTP(S)代理功能、连接超时处理、流数据下载等。
有关requests 库的更多介绍请访问:
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
2.安装测试
采用pip指令安装requests库:
\>pip install requests
测试;

3.主要方法
request库的7个主要方法
| 方法 | 说明 | 
| requests.request() | 构造一个请求,支撑以下各方法的基础方法 | 
| requests.get() | 获取HTML网页的主要方法,对应于HTTP的GET | 
| requests.post() | 向HTML网页提交POST请求的方法,对应于HTTP的POST | 
| requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD | 
| requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT | 
| requests.patch() | 向HTML网页提交局部修改请求,对应于HTTP的PATCH | 
| requests.delete() | 向HTML页面提交删除请求,对应于HTTP的DELETE | 
requests库的get()方法
requests.get(url, params=None, **kwargs)
url : 拟获取页面的url链接
params : url中的额外参数,字典或字节流格式,可选
**kwargs: 12个控制访问的参数

get方法的原码

实际上get方法是用request方法来封装的,其他六种方法也是,根本上只有一种request方法!!!
4.Response对象
Requests库的2个重要对象:


Response对象包含服务器返回的所有信息,同时也包含向服务器请求的Request信息。
Response对象属性
| 属性 | 说明 | 
| r.status_code | HTTP请求的返回状态,200表示连接成功,404表示失败 | 
| r.text | HTTP响应内容的字符串形式,即,url对应的页面内容 | 
| r.encoding | 从HTTP header中猜测的响应内容编码方式 | 
| r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) | 
| r.content | HTTP响应内容的二进制形式(图片的还原) | 
r.encoding:如果header中不存在charset,则认为编码为ISO‐8859‐1(这种编码并不能解析中文!!!)
r.text根据r.encoding显示网页内容
r.apparent_encoding:根据网页内容分析出的编码方式可以看作是r.encoding的备选
原则上来说其实apparent_encoding编码方式比encoding更为准确,encoding并没有分析内容,只是从header相关字段中提取编码数,而apparent_encoding却是实实在在分析内容,并且找到可能的编码。
5.Response库的异常
| 异常 | 说明 | 
| requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 | 
| requests.HTTPError | HTTP错误异常 | 
| requests.URLRequired | URL缺失异常 | 
| requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 | 
| requests.ConnectTimeout | 连接远程服务器超时异常 | 
| requests.Timeout | 请求URL超时,产生超时异常(发憷请求到获得内容整个过程) | 
raise_for_status()方法:
raise_for_status()方法能在非成功响应后产生异常,即只要返回的请求状态status_code 不是200,这个方法会产生一个异常,用于try…except 语句。
使用异常处理语句可以避免设置一堆复杂的if 语句,只需要在收到响应调用这个方法,就可以避开状态字200以外的各种意外情况。
6.通用代码框架
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout=30)
r.raise_for_status() # 如果状态不是200, 引发HTTPError异常
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常" if __name__=="__main__":
url = "http://www.baidu.com"
print(getHTMLText(url))
Python Requests库简单入门的更多相关文章
- Python:requests库、BeautifulSoup4库的基本使用(实现简单的网络爬虫)
		Python:requests库.BeautifulSoup4库的基本使用(实现简单的网络爬虫) 一.requests库的基本使用 requests是python语言编写的简单易用的HTTP库,使用起 ... 
- python  requests库的简单运用
		python requests的简单运用 使用pycharm获取requests包 ctrl+alt+s Project:pythonProject pythoninterpreter 点+号搜索 使 ... 
- Python爬虫的简单入门(一)
		Python爬虫的简单入门(一) 简介 这一系列教学是基于Python的爬虫教学在此之前请确保你的电脑已经成功安装了Python(本教程使用的是Python3).爬虫想要学的精通是有点难度的,尤其是遇 ... 
- Python 数据处理库 pandas 入门教程
		Python 数据处理库 pandas 入门教程2018/04/17 · 工具与框架 · Pandas, Python 原文出处: 强波的技术博客 pandas是一个Python语言的软件包,在我们使 ... 
- 使用python requests库写接口自动化测试--记录学习过程中遇到的坑(1)
		一直听说python requests库对于接口自动化测试特别合适,但由于自身代码基础薄弱,一直没有实践: 这次赶上公司项目需要,同事小伙伴们一起学习写接口自动化脚本,听起来特别给力,赶紧实践一把: ... 
- 大概看了一天python request源码。写下python requests库发送 get,post请求大概过程。
		python requests库发送请求时,比如get请求,大概过程. 一.发起get请求过程:调用requests.get(url,**kwargs)-->request('get', url ... 
- python requests库学习笔记(上)
		尊重博客园原创精神,请勿转载! requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.pytho ... 
- Python——Requests库的开发者接口
		本文介绍 Python Requests 库的开发者接口,主要内容包括: 目录 一.主要接口 1. requests.request() 2. requests.head().get().post() ... 
- Python requests库的使用(一)
		requests库官方使用手册地址:http://www.python-requests.org/en/master/:中文使用手册地址:http://cn.python-requests.org/z ... 
随机推荐
- Angular7教程-05-搭建项目环境
			1. 本节说明 本节以及后面的内容我们将会通过搭建一个简单的博客程序来对angular进行介绍,项目使用前端框架是bootstrap.版本v3.3.7,另外需要安装jquery.关于bootstrap ... 
- 【leetcode】804
			import java.util.*; import java.lang.*; public class Test{ public static int fun_solve(String[] word ... 
- Redis 单机和多实例部署
			作者:北京运维 1. 安装环境说明 OS 版本:CentOS 7.5.1804 Redis 版本:redis-3.2.12 Redis 下载页面:http://download.redis.io/re ... 
- opacity(透明度)属性设置
			1.opacity:是属性,整个元素包含子元素全部都会透明,取值范围0-1; 2.background-color:rgba(0,0,0,.5)rgba是值,用于背景,取值范围0-1. 补充:a-al ... 
- 自学tensorflow——1.框架初步了解以及构建简单的计算图计算
			1.初步了解 tensorflow是谷歌的一款开源深度学习框架.运行前,需要先定义好计算图,最后通过会话启动计算图,这么做的目的是为了防止数据在python和c++(tensorflow底层)传输的时 ... 
- ruby中的循环——times
			times:能够得知循环的次数 格式: 循环次数.times do 希望循环的处理 end 或者可省略do~end,用{~}代替: 循环次数.times{ 希望循环的处理 } 循环从第0次开始,可以看 ... 
- Rails中重写Active Record字段属性
			系统重构或升级时偶尔会碰到需要重写某个字段的情况,例如: 1. 读取user的name字段时,实际返回name_new字段 class User < ActiveRecord::Base def ... 
- 07-容器类Widget
			容器类Widget 容器类Widget一般只是包装其子Widget,对其添加一些修饰(补白或背景色等).变换(旋转或剪裁等).或限制(大小等) Padding Padding可以给其子节点添加补白(填 ... 
- golang基础--method方法
			Go没有类似python语言中类class的概念,但依旧有method 类型方法定义格式如下 func (a mytype) method_name(x type)(y type){ return y ... 
- 一道hive面试题(窗口函数)
			表student中的数据格式如下: name month degree s1 201801 As1 201802 As1 201803 Cs1 201804 As1 201805 As1 201806 ... 
