爬虫定义
爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。
reuqests安装
requests库是python的第三方库,是一个比较简单好用的爬虫库
打开命令行直接使用pip安装requests第三方库
pip install requests
requests方法
HTTP协议对资源的操作
方法 | 说明 |
---|---|
GET | 请求获取URL位置的资源 |
HEAD | 请求获取URL位置资源的响应消息报告,即获得该资源的头部信息 |
POST | 请求向URL位置的资源后附加新的数据 |
PUT | 请求向URL位置存储一个资源,覆盖原URL位置的资源 |
PATCH | 请求局部更新URL位置的资源,即改变该处资源的部分内容 |
DELETE | 请求删除URL位置存储的资源 |
方法里的参数
**kwargs:控制访问的参数,均为可选项
参数 | 说明 |
---|---|
params | 字典或字节序列,作为参数增加到url中 |
data | 字典、字节序列或文件对象,作为Request的内容 |
json | JSON格式的数据,作为Request的内容 |
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证书路径 |
requests.request( )
构造一个请求,支撑以下各方法的基础方法
格式:requests.request(method, url,**kwargs)
method:请求方式
url:获取页面url链接
**kwargs:13个控制访问的参数
requests.get( )
获取HTML网页的主要方法,对应于HTTP的GET
格式:requests.get(url, parems=none, **kwargs)
括号里除了url,其余看情况选择合适的参数
parems:字典或字节序列,作为参数增加到url中,可选项
requests.head( )
获取HTML网页头信息的方法,对应于HTTP的HEAD
格式:requests.head(url, **kwargs)
requests.post( )
向HTML网页提交POST请求的方法,对应于HTTP的POST
格式:requests.post(url, data=none, json=none, **kwargs)
data:字典、字节序列或文件,Request的内容
json:JSON格式的数据,Request的内容
requests.put( )
向HTML网页提交PUT请求的方法,对应于HTTP的PUT
格式:requests.put(url, data=none, **kwargs)
put必须将URL位置的全部字段提交,未提交字段被删除
requests.patch( )
向HTML网页提交局部修改请求,对应于HTTP的PATCH
格式:requests.patch(url, data=none, **kwargs)
patch仅向URL位置提交部分字段的更新请求,相比put请求节省网络带宽
requests.delete( )
向HTML页面提交删除请求,对应于HTTP的DELETE
格式:requests.delete(url, **kwargs)
requests对象
属性 | 说明 |
---|---|
r.status_code | HTTP请求的返回状态, 200表示连接成功, 404表示失败 |
r.text | HTTP响应内容的字符串形式,即url对应的页面内容 |
r.encoding | 从HTTP header中猜测的响应内容编码方式 |
r.apparent_encoding | 从内容中分析出的响应内容编码方式(备选编码方式) |
r.content | HTTP响应内容的二进制形式 |
r.headers | 返回字典形式的响应头 |
r.cookies | 返回响应的cookie |
requests异常
异常 | 说明 |
---|---|
requests.ConnectionError | 网络连接错误异常,如DNS查询失败、拒绝连接等 |
requests.HTTPError | HTTP错误异常 |
requests.URLRequired | URL缺失异常 |
requests.TooManyRedirects | 超过最大重定向次数,产生重定向异常 |
requests.ConnectTimeout | 连接远程服务器超时异常 |
requests.Timeout | 请求URL超时,产生超时异常 |
r.raise_ for_status( )方法可以判断返回的状态码是否为200,如果不是200返回异常。使用时不用if判断r.status_code返回的状态码,直接使用try- except语句进行异常处理。
爬取网页通用框架
import requests
def getHTMLText(url):
try:
r = requests.get(url, timeout=10) # 设定请求时间,超时异常
r.raise_for_status() # 如果状态不是200,引发HTTPError异常
r.encoding = r.apparent_encoding # 将根据网页内容分析出的编码方式当作输出时的编码
return r.text
except:
return "产生异常"
if __name__ == "__main__":
url = "https://www.baidu.com"
print(getHTMLText(url))
以上均为个人学习笔记,如有错误请指正,共同学习,谢谢。