我们知道,在python网络爬虫上有一个库特别重要,在网站的爬取上,我们常用到python的requests这个第三方库,这也被称为是“获取网页的爬虫的最好的第三方库”。
一、Requests库的七个主要方法
方法 | 说明 |
---|---|
requests.request() | 构造一个请求支撑以下各方法的基础方法 |
requests.get() | 获取HTML 网页的主要方法,对应于HTTP的GET |
requests.head() | 获取HTML网页头信息的方法,对应于HTTP的HEAD |
requests.post() | 想HTML网页提交post请求的方法,对应于HTTP的POST |
requests.put() | 向HTML网页提交PUT请求的方法,对应于HTTP的PUT |
requests.patch() | 向HTML网页提交局部修改的请求,对应于HTTP的PATCH |
requests.delete() | 向HTML网页提交删除请求,对应于HTTP的DELETE |
注:requests.request()是最为基础的一个方法,其他六个方法基本上都是以这个方法为基础搭载而成的。
二、对上面的方法的简单介绍(用法)
1.requests.request(method,url,^kwargs)
2.requests.get(url,params=None,^kwargs)
3.requests.head(url,params=None,^kwargs)
4.requests.post(url,data=None,json=None,^kwargs)
5.requests.put(url,data=None,^kwargs)
6.requests.patch(url,data=None,^kwargs)
7.requests.delete(url,^kwargs)
参数就如以上所示,与HTTP中的参数相互对应。以下给出上面参数的意思:
参数名 | 意义 |
---|---|
params | 字典或字节序列,作为参数增加带url中 |
data | 字典、字节序列或者文件对象,作为Request的内容 |
Json | JSON格式的数据,作为Request的内容 |
headers | 字典,HTTP定制头(可用来模拟浏览器对服务器发起模拟行为、操作) |
cookies | 字典或cookieJar,Request中的cookie |
auth | 参数为元组类型,支持HTTP认证功能 |
files | 字典类型,传输文件 |
timeout | 设定超时时间,单位为秒 |
proxies | 字典类型,设定访问代理服务器,可以增加登录认证(也可以设置访问服务器时的IP地址,隐藏用户所用的实际IP) |
allow-redirects | 参数值可为True/False,默认为True,重定向开关 |
steam | 参数值可为True/False,默认为True,,获取内容立即下载开关 |
verity | 参数值可为True/False,默认为True,认证SSL证书开关 |
cert | 本地SSL证书路径 |
注:其中上面的method表示请求方式,对应get/put/post等七种;^kwatgs表示控制访问的参数13个(均为可选项)。
三、Response的属性
r.status_code | 表HTTP请求的返回状态,200表示连接成功(404表示失败,一般非200都是失败) |
---|---|
r.text | 表HTTP相应内容的字符串形式,也就是url对应的页面内容 |
r.encoding | 表从HTTP header中猜测的相应内容的编码方式 |
r.apparent_encoding | 表从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | 表HTTP响应内容的二进制形式 |
注:理解Response的编码中的r.encoding和r.apparent_encoding的不同:r.encoding是从HTTP header中猜测内容编码方式(加入header中不存在charset,那么默认为“ISO-8859-1”),而r.apparent_encoding是从内容中分析之后响应的编码方式,
四、理解response库的异常处理
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
---|---|
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常(部分过程) |
requests.Timeout | 请求URL超时,产生超时异常(整个过程) |
五、爬取网页的通用代码框架(代码)
import requests
def gethtml(url):
try:
r=requests.get(url,timeout=30)
r.raise_for_status #如果状态不是200,则会应发HTTPError异常
r.encoding=r.apparent_encoding
return r.text
except:
return "产生异常"
注:以上代码使得爬取网页更加有效可靠。
这是笔者第一次写关于学术性的博客,错误一定很多,还望广大大佬多多指正。