我爱编程

了解爬虫

2018-05-28  本文已影响0人  繁花落尽不忘初心

一:>什么是爬虫?

        *可以针对目标地址进行数据采集的计算机程序                                                                                               *爬虫程序:发送请求给服务器,获取服务器数据                                                                                           * 爬虫程序发送的请求可以通过抓包(fiddler,wareshark等)来实现                                                           * 浏览器发送的请求可以通过F12来实现

二:>爬虫的分类(通用爬虫 VS 聚焦爬虫)(累积爬虫 VS 增量爬虫)

              *通用爬虫:一般使用在搜索引擎中的,在进行数据采集的过程中,要遵循Robot协议,他可以将                                      自己的网站让更多的人通过搜索引擎访问(Robot协议:是一种约定的规范,针对通                                    过爬虫进行的数据采集限制)

              *聚焦爬虫:一般是自己独立开发的爬虫采集数据的程序,针对性较强,每个数据采集任务,都有                                  可能要开发一套新的项目

              *累积爬虫:历史数据不会发生变化,一旦数据执行完成,数据就是固定不变的(PS:采集彩票历                                    史数据,方便对下一期进行预测评估)

              *增量爬虫:需要实时对历史采集的数据进行更新(PS:新闻网页,微博热搜)

三:>爬虫的实现

开发环境:python2.7                                    开发工具:pycharm

python2.7使用 ascii 编码,不支持中文,所以写代码第一行的位置,要添加支持中文的注释(coding:utf-8),使用python2.7的原因是开发周期短,操作更加灵活且在爬虫方向支持的模板更多,还可通过“Java,PHP,C++,C#,Ruby”等实现爬虫

四:>爬虫的操作

1.代码开发:urllib2 底层数据的采集采用 urlopen() 函数,可以向服务器发送请求

2.伪造请求:伪装浏览器请求                                                                                                                                             *请求对象:请求头数据,请求体数据,请求方式                                                                                           *在这里主要通过请求头的 User-agent 设置,完成浏览器请求的伪装    (请求中的K键值单词                      首字母必须大写)                                                                                                                                           *请求核心对象:urllib2.Request 对象

3.模仿用户行为:只有在特殊的情况下才会使用,因为随机休眠严重影响爬虫采集数据的效率

4.隐藏客户端:使用IP代理(免费代理&收费代理),代理真实客户端完成对服务器数据的访问                                       *正向代理(代购):代理客户端发起请求,向服务器发送数据,隐藏客户端                                               *反向代理(代理商):代理的服务端,隐藏真实服务器信息                                                                         * urlopen 底层操作:                                                                                                                                                                   *操作对象:urllib2.ProxyHandler( { 填写代理的IP地址 } )                                                                               *开锁对象:urllib2.build_opener(handler)                                                                                                 *发送请求:res = opener.open(url)

上一篇下一篇

猜你喜欢

热点阅读