python-网络爬虫与信息提取
网络爬虫之规则
单元1:Requests库入门
Requests库的安装
安装代码:pip install requests
测试Requests库
#测试是否安装Requests库
#选用的工具是pythoncharm
#编写代码
import requests
r=requests.get("http://www.baidu.com")#爬取百度网页信息
a=r.status_conde
print(a)#状态码输出200表示成功
r.encoding='utf-8'
w=r.text
print(w)
结果展示:

Requests库的七个主要方法
1.requests.request():构造一个请求,支撑一下各个方法的基础方法
2.requests.get():获取html网页的主要方法,对应HTTP的GET
3.requests.head():获取html网页头部信息的方法,对应HTTP的HEAD
4.requests.post():向html网页提交端口(POST)请求方法,对应HTTP的POST
5.requests.put():向html网页提交PUT请求方法,对应HTTP的PUT
6.requests.patch():向html网页提交局部修改请求,对应HTTP的PATCH
7.requests.delete():向html网页提交删除请求,对应HTTP的DELETE.
Requests两个对象
requests.get(url)
1.Requests对象:构造一个服务器请求资源的requests对象。
请求get()函数返回的内容是一个包含服务器相关信息的Responsed对象。
requests.get 使用方法
requests.get(url,params=None,**kwargs)
url:获取网页的url链接
params:url中的额外参数,字典或字节流格式,可选
**kwargs:12个控制访问的参数
Response对象的属性
1.r.status_code :HTTP请求返回状态,200表示状态,404表示失败
2.r.text:HTTP响应内容的字符串形式,url对应的页面内容。
3.r.encoding:从HTTP header(头部)中猜测的响应内容编码方式
4.r.apparnet_encoding:从内容中分析的响应内容编码方式(备选编码方式)
5.r.content:从响应内容的二进制形式。
Respones两种编码方式
r.encoding:如果header中不存在charset,则编码为ISO-8859-1
r.apparnet_encoding:用于从网页内容文本中解析编码方式的识别机制,并相较于r.encoding更为精准。
爬取网页的通用代码框架
什么是代码框架?
代码框架就是一组常用的代码。
Requests库异常
HTTP库的1号错误:网络连接失败的情况包括DNS查询失败和无法建立连接
2.requests.HTTPError:HTTP错误
3.requests.URLRequired:URL缺失异常
4.requests.TooManyRedirects:超过最大重定向次数,产生重定向异常
5.requests.ConnectTimeout:连接远程服务器超时异常
6.requests.Timeout:请求URL超时,产生超时异常。
判断异常的方法
r.raise_for_status():是200,内容正确,不是200,产生异常requests.HTTPError
Http协议以及Requests库方法
什么是超文本协议
HTTP,Hypertext Transfer Protocol,超文本传输协议
HTTP是一个基于”请求与响应“模式的、无状态的应用层协议。
请求与响应:用户发起请求,服务器做出响应
无状态:第一与第二次响应之间没有相关联系
应用层:该协议工作在TCP协议之上。
HTTP协议采用URL作为定位网络资源的标识。
URL格式
http://host[:port][path] http:两个反/开头
host:合法的Internet主机的域名或IP地址
port:端口号,缺省端口为80
path:请求资源的路径。
HTTP URL的理解
RUL基于HTTP协议作为获取资源的网络路径;每个RUL都与一个数据资源相关联
HTTP协议对资源的操作
1.GET:请求获取URL位置的资源
2.HEAD:请求获取RUL位置资源的响应消息报告,即获得资源的头部信息
3.POST:请求向URL位置的资源后附加新的数据。
4.PUT:请求向URL位置存储一个资源,覆盖原URL位置的资源。
5.PATCH:请求局部更新URL位置的资源,即改变该处资源的部分内容
6.DELETE:请求删除URL位置存储的资源。
理解PATCH和PUT的区别

