Python网络爬虫.3(笔记)
笔记均是观看慕课视频所记录的。
理解Requests库的异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirect | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常(仅指与远程服务器连接的超时异常) |
requests.Timeout | 请求URL超时,产生超时异常(发出URL请求到获得内容整个过程的超时异常) |
r.raise_for_status() | 如果不是200,产生异常requests.HTTPError |
response对象返回网页所有内容。
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try-except进行异常处理。
爬取网页的通用代码框架
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))
HTTP协议:
HTTP,超文本传输协议。
HTTP是一个基于“请求与响应”模式的、无状态的应用层协议。
(无状态:第一次请求和第二次请求之间没有关联;应用层协议:该协议工作在TCP协议之上)
HTTP协议采用URL作为定位网络资源的标识。
URL格式 http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径
HTTP URL实例:
http://www.bit.edu.cn 北京理工大学校园网首页
http://220.181.111.188/duty 这样一台主机下duty目录下的相关资源
HTTP URL的理解:
URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
HTTP协议对资源的操作
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该初资源的部分内容 |
DELETE | 请求删除URL位置存储的资源 |
HTTP协议对资源的操作
通过URL对资源定位,以上6个命令对资源进行管理
通过URL和命令管理资源,操作独立无状态,网络通道及服务器成为了黑盒子
理解PATCH和PUT的区别
假设URL位置有一组数据UserInfo,包括UserID、UserName等20个字段
需求:用户修改了UserName,其他不变
- 采用PATCH,仅向URL提交UserName的局部更新请求
- 采用PUT,必须将所有20个字段一并提交到URL,未提交字段被删除
PATCH的最主要好处:节省网络带宽
HTTP协议与 Requests库
HTTP协议方法 | Requests库方法 |
---|---|
GET | requests.get() |
HEAD | requests.head() |
POST | requests.post() |
PUT | requests.put() |
PATCH | requests.patch() |
DELETE | requests.delete() |
二者对应的功能都满足一致性。
向URL POST一个字典,自动编码为form(表单)
向URL POST一个字符串,自动编码为data