一、环境

IDLE,Subline Text,PyCharm,Anaconda & Spyder。

二、requests库

1.安装

cmd:pip install requests

 

2.七方法

requests.request(method, url , **kwarge) 构造请求支撑以下各种方法的基础方法,method :get post head put  patch delete options;

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请求的方法,对应与http的post;

requests.put(url,data=None,**kwargs) 向HTML网页提交put请求的方法,对应与http的put;

requests.patch(url,data=None,**kwargs) 向HTML网页提交局部修改请求,对应与http的patch;

requests.delete(url,data=None,**kwargs) 向HTML网页提交删除请求,对应与http的delete

 

3.http对requests库方法的变动:1.post 请求向url位置后的资源附加新的数据   2.put  请求向url的位置加入一个新的资源,并覆盖原来的url资源

 

4.requests.get(url,params=None,**kwargs)      params:url中的额外参数,字典或者字节流格式   **kwargs:12个控制访问的参数

 

5.最重要的两个对象:request,response

 

6.response对象的属性

r.status_code  http请求的返回状态 200表成功 404表失败;

r.text   http响应内容的字符串形式;

r.encoding   从http header中猜测的相应内容编码方式;

r.apparent_encoding 从内容中分析出的响应内容编码方式(备选编码方式);

r.content http响应内容的二进制形式;

 

7.Requests库返回的几种异常

requests.HTTPError    HTTP错误异常;

requests.URL.Required    URL缺失异常;

requests.ConnectionError   网络连接错误异常如:dns查询失败,拒绝连接等等;

requests.TooManyRedireets  超过最大重定向次数 产生重定向异常;

requests.ConnectTimout   连接远程服务器超时异常;

requests.Timeout    请求URL超时,产生超时异常;

 

8.r.raise_for_status()   如果不是200,产生异常requests.HTTPError           能判断response对象的状态是不是200

 

9.**kwargs 可选的参数

params=字典或字节序列 作为参数加到url中,并让服务器应答的时候和url一起答复;

json=json格式的数据作为request的内容;

headers 定制访问的url的http头    可用来模拟不同的浏览器;

data=字典或字节序列或文件对象 作为request的内容;

cookies:字典或cookieJaar,request中的cookie;

auth:元组,支持http认证功能;

files:字典类型,传输文件;

timeout 设定超时时间,秒为单位;

proxies字典类型,设定访问代理费服务器,可以增加登陆认证

 

10.网络爬虫的尺寸

爬网页:小规模,数据量小,爬取速度不敏感,常用request库

爬网站:中规模,数据量较大,速度敏感,scrapy库

爬全网:大规模,搜索引擎,速度关键,定制开发。

 

11.爬虫危害:骚扰问题,法律风险,隐私泄露

 

12.爬虫的限制

开源审查:判断user-Agent进行限制,检查来访http协议头的User-Agent域,只响应相应浏览器或友好爬虫的访问;

发布公告:Robots协议 告知所有爬虫网站的爬取策略,要求爬虫遵守,Robots协议(Robots Exclusion Standard 网络爬虫排除标准) 作用:网站告知网络爬虫哪些页面可以抓取哪些不行  形式:在网站根目录下的robots.tet文件。非强制性