版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_37378518/article/details/81490404
WEEK1
Unit 1 Requests库入门
Requests库的get()方法
Requests库的7个主要方法
- reqest() 构造一个请求,支撑一下各方法的基础方法
- get() 获取html网页的主要方法,对应于http的get
- head() 获取html网页头信息的方法,对应于http的head
- post() 向html网页提交post请求的方法,对应于http的post
- put() 向html网页提交put请求的方法,对应于http的put
- patch() 向html网页提交局部修改请求,对应于http的patch
- delete() 向html网页提交删除请求,对应于http的delete
Response对象包含服务器返回的所有信息,也包含请求的Request信息
Response对象属性
- r.status_code HTTP请求的返回状态
- 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的备选
爬取网页的通用代码框架
理解Requests库的异常
- requests.ConnectionError 网络连接错误,如DNS查询失败,拒绝连接
- requests.HTTPError HTTP错误异常
- requests.URLRequired URL缺失异常
- requests.TooManyRedirects 超过最大重定向次数,产生重定向异常
- requests.ConnectionTimeout 连接远程服务器超时异常
- requests.Timeout 请求URL异常,产生超时异常
r.raise_for_status()在方法内部判断r.status_code是否等于200,不需要增加额外的if语句,该语句便于利用try-catch进行异常处理
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 "异常产生"
HTTP协议及Requests库方法
Requests库的7个主要方法
- request() 构造一个请求,支撑一下各方法的基础方法
- get() 获取HTML网页
- head() 获取HTML网页头部信息
- post() 向HTML网页提交POST请求
- put() 向HTML网页提交PUT请求
- patch() 想HTML网页提交局部修改
- delete() 向HTML页面提交删除请求
PATCH和PUT的区别:
- 假设URL位置有一组数据UserInfo,包括userID、userName等20个字段
- 需求:用户修改了userName,其他不变
- PATCH:仅向URL提交userName的局部更新请求
- PUT :必须将20个字段一并提交到URL,未提交字段被删除
Requests库主要方法解析
request(method, url, **kwargs) 其余几个方法都是基于此
扫描二维码关注公众号,回复:
4816463 查看本文章
- method 请求方式,对应有get/pt/post等7种
- url 拟获取页面的url链接
- **kwargs 控制访问的参数,共13个,均为可选项
- params 字典或字节序列,作为参数增加到url中
- data 字典、字节序列或文件对象,作为Requests的内容
- json JSON格式的数据,作为Requests的内容
- headers 字典,HTTP定制头
- cookies 字典或CookieJar,Request中的cookie
- auth 元组,支持HTTP认证功能
- files 字典类型,传输文件
- timeout 设定超时时间,单位秒
- proxies 字典类型,设定访问代理服务器,可以增加登录认证
- allow_redirects True/False,默认为True,重定向开关
- stream True/False,默认为True,获取内容立即下载开关
- verify True/False,默认为True,认证SSL证书开关
- cert 本地SSl证书路径
Unit 2 网络爬虫的“盗亦有道”
网络爬虫的限制
- 来源审查:判断User-Agent进行限制。检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问
- 发布公告:Robots协议。告知所有爬虫网站的爬取策略,要求爬虫遵守
Robots协议
- 作用:网站告知网络爬虫哪些页面可以抓取,哪些不行
- 形式:在网站根目录下的robots.txt文件
Robots协议的使用
- 网络爬虫:自动或人工识别robots.txt,再进行内容爬取
- 约束性:Robots协议是建议但非约束性,网络爬虫可以不做手,但存在法律风险
原则: 类人行为可不参考Robots协议