IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python -- Requests库的使用 -> 正文阅读

[Python知识库]Python -- Requests库的使用

Requests库的使用

1.requests库概述

??requests库是一个简洁且简单的处理HTTP请求的第三方库,它的最大优点是程序编写过程更接近正常URL访问过程。这个库建立在Python 语言的 urllib3库的基础上,类似这种在其他函数库之上再封装功能、提供更友好函数的方式在Python语言中十分常见。在Python生态圈里,任何人都有通过技术创新或体验创新发表意见和展示才华的机会。requests库支持非常丰富的链接访问功能,包括国际域名和URL获取、HTTP长连接和连接缓存、HTTP会话和Cookie保持、浏览器使用风格的SSL验证、基本的摘要认证、有效的键值对Cookie记录、自动解压缩、自动内容解码、文件分块上传、HTTP(S)代理功能、连接超时处理、流数据下载等。

2.requests库解析

??网络爬虫和信息提交只是requests库能支持的基本功能,本节重点介绍与这两个功能相关的一些常用函数。其中,与网页请求相关的函数如表所示。

????requests库中的网页请求函数(共6个)

函数描述
get(url [, timeout=n])对应于HTTP的GET方式,获取网页最常用的方法,可以增加timeout=n参数,设定每次请求超时时间为n秒
post(url, data = (‘key’:‘value’))对应于HTTP的POST方式,其中字典用于传递客户数据
delete(url)对应于 HTTP的 DELETE方式
head(url)对应于HTTP的HEAD方式
options(url)对应于HTTP的OPTIONS方式
put(url, data = (‘key’:‘value’))对成于HTTP的PUT方式,其中字典用于传递客户数据

??get()是获取网页最常用的方式,在调用requests.get()函数后,返回的网页内容会保存为一个Response对象,其中,get()函数的参数url链接必须采用HTTP或HTTPS方式访问,例如:

>>>import requests
>>>r = requests.get("http://www.baidu.com") #使用get方法打开百度链接
>>>>type(r)
<class 'requests.models.Response'>  #返回Response对象

??从爬虫应用角度来看,只需要掌握get()函数即可获取网页。和浏览器的交互过程一样,requests.get()代表请求过程,它返回的Response对象代表响应。返回内容作为一个对象更便于操作,Response对象的属性如表所示。

函数描述
status_codeHTTP请求的返回状态,整数,200表示连接成功,404表示失败
textHTTP响应内容的字符串形式,即url对应的页面内容
encodingHTTP响应内容的编码方式
contentHTTP响应内容的二进制形式

??status_code属性返回请求HTTP后的状态,在处理数据之前要先判断状态情况,如果请求未被响应,需要终止内容处理。text属性是请求的页面内容,以字符串形式展示。encoding属性非常重要,它给出了返回页面内容的编码方式,可以通过对encoding属性赋值更改编码方式,以便于处理中文字符。content属性是页面内容的二进制形式。例如:

>>>r = requests.get("http://www.baidu.com")
>>>r.status_code     #返回状态
200
>>>r.text    #观察返回的内容,中文字符是否能正常显示
>
>>>r.encoding    #默认的编码方式是ISO-8859-1,所以中文是乱码
'ISO-8859-1'
>>> r.encoding = 'utf-8' #更改编码方式为utf-8
>>> r.text   #更改完成,返回内容中的中文字符可以正常显示了

??除了属性,Response对象还提供一些方法。

??Response对象的方法(共2个)

函数描述
json()如果HTTP响应内容包含JSON格式数据,则该方法解析JSON数据
raise_for_status()如果不是200,则产生异常

??json()方法能够在HTTP响应内容中解析存在的JSON数据,这将带来解析HTTP的便利。raise_for_status()方法能在非成功响应后产生异常,即只要返回的请求状态status_code不是200,这个方法会产生一个异常,用于try-except语句。使用异常处理语句可以避免设置一堆复杂的f语句,只需要在收到响应时调用这个方法,就可以避开状态字200以外的各种意外情况。

??requests会产生几种常用异常。当遇到网络问题时,如DNS查询失败、拒绝连接等,requests会抛出ConnectionError异常:遇到无效HTTP响应时,requests则会抛出HTTPError异常;若请求 url超时,则抛出Timeout 异常;若请求超过了设定的最大重定向次数,则会抛出一个TooManyRedirects异常。

??获取一个网页内容的函数建议采用如下代码的第2到第9行,第10和第11行是测试代码。

import requests
def getHTMLText(url):
	try:
		r = requests.get(url, timeout=30)
		r.raise_for_status()#如果状态不是200,引发异常
		r.encoding='utf-8'#无论原来用什么编码,都改成utf-8
		return r.text
	except:
		return ""
url = "http://www.baidu.com"
print(getHTMLText(url))

??拓展:HTTP的GET和POST

??HTTP协议定义了客户端与服务器交互的不同方法,最基本的方法是GET和POST。顾名思义,GET可以根据某链接获得内容,POST用于发送内容。然而,GET也可以向链接提交内容,与POST的区别如下。

??(1)GET方式可以通过URL提交数据,待提交数据是URL的一部分;来用POST方式,待提交数据放置在HTML HEADER内。

??(2)GET方式提交的数据最多不超过1024字节,POST没有对提交内容的长度限制。

??(3)安全性问题。使用GET时参数会显示在URL中,而POST不会。所以,如果这些数据是非敏感数据,那么使用GET;如果提交数据是敏感数据,建议采用POST方式。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-22 18:32:27  更:2022-04-22 18:33:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/28 12:34:43-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计