python网络爬虫与信息提取
1 Request 库
1.1 Requests库的安装
python2.x版本
pip install requests
python3.x版本
pip3 install requests
1.2
Requests库常用方法 ---7个常用方法
get()方法
r = requests.get(url)
r 为一个包含服务器资源的对象 <class requests.models.Response>
requests.get(url, params = None, **kwargs)
url:拟获取页面的url连接
params:url中的额外参数, 字典或者字节流格式, 可选
**kwargs:12个控制访问的参数
<strong>#Response对象包含爬虫返回的内容</strong>
属性 | 说明
- r.status_code | http请求的返回状态, 200表示成功, 404表示失败|
- r.text | http响应的内容的字符串形式, 即url对应的页面内容
- r.encoding | 从http header中<i>猜测</i>的响应内容的编码方式
如果header中不存在charset, 则认为编码为iso-8859-1;
- r.apparent_encoding | 从内容分析出的响应内容的编写方式
- r.content | http响应内容的二进制形式
Requests 库的异常
异常 ********** 说明
requests.ConnectionError | 网络连接错误异常, 比如dns查询失败
requests.HTTPError | HTTP错误异常
requests.URLRequired | URL缺失异常
requests.ToManyRedirects | 超过最大重定向次数, 产生重定向异常
requests.ConnectTimeout | 连接远程服务器超时异常
requests.Timeout |请求url超时, 产生超时异常
r.raise_for_status 如果不是200, 产生一个requests.http异常
HTTP协议
超文本传输协议
HTTP协议对资源的操作类型
方法 ******************** 说明
GET | 请求获取URL位置的资源
HEAD | 请求获取URL位置资源的响应分析报告, 即获取该资源的头部信息
POST | 请求想URL位置资源后附加新的数据
PUT | 请求向URL位置存储一个资源, 覆盖原URL位置的资源
PATCH | 请求局部更新URL位置的资源, 即改变该处资源的部分内容
DELETE | 请求删除URL位置的资源
Requests 主要方法
- requests.request(method, url, ***kwargs)
-
method: 请求方式 GET/POST/PUT/PATCH/DELETE/HEAD/OPTIONS
-
url : 连接地址
-
**kwargs :控制访问的参数, 均为可选项(一共13个)
- params : 字典或者字节序列, 使得url
- data: 字典, 字节徐磊, 或者文件对象, 作为Requests的内容
- json: JSON格式的数据, 作为Requests的内容
- headers: HTTP的定制
- cookies : 字典或者cookieJar
- auth :元组
- files: z字典类型, 传输文件
- timeout 控制访问的参数, 超时时间
- proxies : 字典类型, 设置访问代理服务器, 可以增加登录认证
- all_redirects: True/False , 默认为True, 重定向开关
11.stream : True/False , 默认为True, 获取内容立即下载开关 - verify: True/False , 默认为True, 认证SSL证书开关
- cert 本地SSL证书路径
requests库的其他6个常用的方法, 均是基于request方法
单元小结
- requests.request()
- requests.put()
- requests.get()
- requests.head()
- requests.delete()
- requests.patch()
- requests.post()
通用代码框架的使用
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout = 30)
r.raise_for_status()
r.encoding = r.apparent_encoding
return r.text
except:
return "产生异常"
if __name__ == "__main__":
url = "http://www.baidu.com"
print(getHTMLText(url))