requests库主要方法
import requests requests.request(method, url, **kwargs) """构造一个请求,支撑下面各种基础方法""" # **kwarg包括params, data, json, headers, cookies, auth, files, timeout, proxies(设代理服务器),
# allow_redirexts, stream, verify 12个访问控制参数
requests.get(url, params=None, **kwargs) """获取html网页的主要方法,对应HTTP的GET""" requests.head(url, **kwargs) """获取html网页头信息的方法,对应HTTP的HEAD""" requests.post(url, data=None, json=None, **kwargs) """向html页面提交POST请求""" requests.put(url, data=None, **kwargs) """向html页面提交PUT请求""" requests.patch(url, data=None, **kwargs) """向html页面提交局部修改请求""" requests.delete(url, **kwargs) """向html页面提交删除请求"""
1.requests.get(url, params=None, **kwargs)
url:你获取页面的url链接;
params:url中额外参数,字典或字节流格式,可选;
**kwargs:12个控制访问的参数;
r = requests.get(url)返回一个包含服务器资源的Response对象r,r包含了爬虫返回的全部内容。其中r有5中常用的属性
r.status_code """返回HTTP请求的状态码, 200表示成功,404表示失败""" r.text """HTTP响应内容的字符串形式,url对应页面内容""" r.encoding """从HTTP header中猜测的相应内容编码方式""" r.apparent_encoding """从内容中分析出的响应内容编码方式""" r.content """HTTP响应内容的二进制形式"""
r.raise_for_status """判断状态码是否正确,如果不是200就raise HTTPException"""
2.requests库的异常类型
requests.ConnectionError """网络连接异常,DNS查询失败,拒绝连接等""" requests.HTTPError """HTTP连接错误""" requests.URLRequired """URL缺失异常""" requests.TooManyRedirects """超过最大重定向次数,产生重定向异常""" requests.ConnectTimeout """连接远程服务器时超时""" requests.Timeout """请求URL超时"""
通过以上两点一般的爬取通用框架就可以大致勾画出来
1 import requests 2 3 def getHTMLText(url): 4 try: 5 r = requests.get(url, timeout=30) 6 r.raise_for_status() # 如果状态码错误,则抛出异常 7 r.encoding = r.apparent_encoding 8 return r.text 9 except: 10 return "产生异常" 11 12 if __name__ == "__main__": 13 url = "https://i.cnblogs.com/EditPosts.aspx?opt=1" 14 print(getHTMLText(url))
3.HTTP协议
超文本传输协议(HTTP)是一种基于”请求与响应“模式的、无状态的应用层协议。HTTP协议一般采用URL作为网络定位的标识。(http://host[:port][path])
而URL就是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源。
HTTP协议对资源的操作方法(method)主要有:GET, HEAD, POST, PUT, PATCH, DELETE对应requests库的几个方法,功能也一致。
GET:请求获得URL位置的资源;
HEAD:请求获取URL位置资源的响应消息报告,即该资源的头部信息
POST:请求向URL位置的资源后附加新的数据
PUT:请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH:请求局部更新URL位置的资源,改变该资源的部分内容
DELETE:请求删除URL位置存储的资源