API的交互–Requests

Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用。

一、Requests的安装

官网:https://pypi.python.org/pypi/requests/
中文资料:http://cn.python-requests.org/zh_CN/latest/

二、Requests的常用的几个方法

1.get方法

构造一个向服务器请求资源的Request对象,返回一个包含服务器资源的Response对象(用r来表示)

Response对象的属性

先根据r.status_code判断访问是否成功:
如果是200,再来看r.text,r.encoding,r.apparent_encoding,r.content
如果是404,则报错

2.通用代码框架

requests库的异常

r.raise_for_status() 如果不是200,产生异常requests.HTTPError

通用代码框架

3.http协议和requests的主要方法

requests的主要方法:

HTTP协议:

1.  HTTP,HyperText Transfer Protocol,超文本传输协议
2. HTTP是一个基于‘请求与相应’模式的,无状态的应用层协议(无状态指第一次请求和第二次请求
并没有关联,应用层协议指TCP协议之上)
3. HTTP协议采用URL定位网络资源的标识
URL格式 http://host[:port][path]
host:合法的Internet主机域名或IP地址
port:端口号,缺省端口为80
path:请求资源的地址

URL是通过HTTP协议存取资源的Internet路径,一个URL对应一个数据资源

HTTP协议对资源的操作
GET 请求获取URL位置的资源
HEAD 请求获取URL位置资源的相应消息报告,即获得该资源的头部信息
POST 请求向URL位置的资源后附加新的数据
PUT 请求向URL位置存储一个资源,覆盖原URL位置的资源
PATCH 请求局部更新URL位置的资源,即改变该处资源的部分内容(比put更能节省网页带宽)
DELETE 请求删除URL位置存储的资源

4.requests的主要解析

requests.request(method,url,*kwargs)
method: 请求方式,对应GET,HEAD,POST,PUT,PATCH,DELETE,OPTIONS等七种
url:获取访问网页地址

**kwargs: 控制访问的参数,均为可选项,包括13个可选参数:

params: 字典或字节序列,作为参数增加到url中

data:字典,字节序列或文件对象,作为Requests的内容

json:json格式的数据,作为Requests的内容

headers: 字典,HTTP定制头

cookies :字典或CookieJar,Request中的cookie
auth : 元祖,支持HTTP认证
files: 字典类型,传输文件
url = ‘http://www.baidu.com’
fs = {‘file’: open(‘data.xls’,’rb’)}
r = requests.request(‘POST’,url,files=fs)
timeout:设定超时时间,秒为单位
proxies: 字典类型,设定访问代理服务器,可以增加登陆认证
url = ‘http://www.baidu.com’
pxs = {‘http’: ‘http://user:pass@10.10.10.10.1:1234’,
‘https’: ‘http://10.10.10.10.1:3334’
}
r = requests.request(‘POST’,url,proxies=pxs)
我们访问百度的时候,就是用的代理服务器的IP地址,可以有效隐藏用户爬虫的时候,源的IP地址信息
all_redirects: True/False,默认为True,重定向开关
stream: True/False,默认为True,获取类容立即下载开关
verify: True/False,默认为True,认证SSL证书开关
cert:本地SSL证书路径
requests.get(url,params=None,**kwargs)
requests.head(url,**kwargs)
requests.post(url,data=None,json=None,**kwargs)
requests.put(url,data=None,**kwargs)
requests.patch(url,data=None,**kwargs)
requests.delete(url,**kwargs)
**kwargs为以上可选的13个参数

三、网络爬虫带来的问题

网络爬虫的尺寸

1.小规模,数据量小,爬取速度不敏感
Requests库
爬取网页,玩转网页

2.中规模,数据量较大,爬取速度敏感
Scrapy库
爬取网站,爬取系列网站

3.大规模,搜索引擎,爬取速速关键
定制开发
爬取全网

骚扰问题:受限于编写水平和目的,网页爬虫将会为web服务器带来巨大的资源开销
法律风险:服务器上的数据有产权归属,网络爬虫获取的数据谋取利润将带来法律风险
隐私泄露带来隐私泄露的风险

网页爬虫的限制
来源审查:判断User-Agent进行限制
检查来访HTTP协议头的User-Agent域,只响应浏览器或友好爬虫的访问
发布公告:Robots协议
告知所有爬虫网站的爬取策略,要求爬虫遵守

四、Robots协议

Robots协议(也称为爬虫协议、机器人协议等)的全称是
“网络爬虫排除标准”(Robots Exclusion Protocol),
作用:告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
形式:在网站根目录的robots.txt文件
基本语法:
User-agent:* #表明哪些爬虫
Disallow :/ #不容许爬虫的目录

robots协议的使用
网络爬虫:自动或人工识别robots.txt,再进行内容爬取
约束性:Robots协议是建议非约束性,网络爬虫可以不遵守,但存在法律风险

五、爬虫实战

1.获得信息

2.网页查询(如:百度)

3.图片下载和存储

4.ip地址归属自动查询

一、初步认知

二、下载图片

案例:

参考资料:
http://panyongzheng.iteye.com/blog/1950119
北京理工大学,嵩天老师的课件

发表评论

电子邮件地址不会被公开。 必填项已用*标注