一,什么是爬虫
网络怕中又称为网络蜘蛛,网络蚂蚁,网络机器人等,可以自动化浏览网络中的信息,当然浏览信息的时候需要按照我们制定的规则进行,这些规则称之为网络爬虫算法。使用python可以很方便的写出爬虫程序,进行互联网信息的自动化检索
二,为什么学习爬虫
私人定制一个搜索引擎,并且可以对搜索引擎的采集工作原理进行更深层次的理解,获取更多的数据源,并且这些数据源可以按照我们的目的进行采集,去掉很多的五官数据, 更好的进行seo(搜索引擎优化)
三,网络爬虫的组成
1⃣️控制节点: 叫做爬虫中央控制器,主要负责根据url地址分配线程,并调用爬虫节点进行具体的爬行
2⃣️爬虫节点:按照相关的算法,对网页进行具体的爬行,主要包括下载网页以及对网页的文本处理,爬行后会将对应的爬行结果存储到对应的资源库中
3⃣️资源库构成: 存储爬虫爬取到的响应数据,一般为数据库
四,爬虫设计思路
1⃣️首先确定需要爬取的网页URL地址
2⃣️通过http协议来获取对应的html页面
3⃣️如果是需要的数据就保存起来,如果页面是其他的url,那么就继续执行第二步
五,PHP,JAVA,PYTHON比较
1⃣️PHP:虽然是世界上最好的语言,但天生不是干爬虫的命,php对多线程,异步支持不足,并发不足,爬虫是工具性程序,对速度和效率要求较高
2⃣️Java 生态圈完善,是python最大的对手,但是java本身很笨重,代码量大,重构成本比较高,任何修改都会导致大量代码的变动,最要命的是爬虫需要经常修改部分代码。
3⃣️python 语法优美,代码简洁,开发效率高,三方模块多,调用其他接口也方便,有强大的爬虫scrapy,以及成熟高校的scrapy-redis分布式策略
需要的技能
1)如何抓取页面内容
http请求处理,urlib处理后的请求可以模拟浏览器发送请求,获取服务器响应的文件
2)解析服务器响应的内容
re,xpath,beautyfulsoup4,jsonpath,pyquery目的是使用某种描述性语法来提取匹配规则的数据
3)对动态html,验证码的处理
selenium+phantomJS(无界面浏览器),模拟真实浏览器加载js,ajax等非静态页面,机器学习库,机器图像识别系统(识别图片中的文本) Tesseract
4)Scrapy框架
中国常见的框架Scrapy,Pyspider高定制高性能(异步网络框架twisted)所以数据下载速度非常快,提供了数据存储,数据下载,提取规则等组件
5)分布式策略
scrapy-redis,在scrapy的基础上添加了一套Redis数据库为核心的一套组件,让scrapy框架支持分布式的功能,主要在Redis里做请求指纹去重,请求分配,数据临时存储
六,反爬虫技术
1,user-agent 2,代理 3,验证码 4,动态数据加载
七,抓取流程
1,首先选取一部分已有的url,把这些url放到带爬队列,从队列里提取出这些URL,然后解析DNS得到主机IP,然后去这个IP对应的服务器里下载html页面,保存到搜索引擎的本地服务器里,之后爬过的URL放入爬取队列
2,分析这些网页内容,找出网页里的URL连接,继续执行第二步,直到爬取条件结束
八,搜索引擎如果获取一个新网站的URL
1,主动向搜索引擎提交网址(百度站长平台)
2,在其他网站里设置网站的外链接
3,搜索引擎会合dns服务商合作,可以快速收录新的网站
九,通用爬虫并不是玩物皆可爬的,他需要遵守规则
1,协议会指明通用爬虫可以爬去网页的权限,Robots.txt只是一个建议,并不是所有的爬虫都遵守,一般只有大型的搜索引擎爬虫才会遵守
十,通用爬虫工作流程
1,爬取网页
2,存储数据
3,内容处理
4,提供检索/排名服务
十一,搜索引擎排名
1,pageRank值:根据网站的流量(点击量,浏览值人气)统计,流量越高,网站越值钱,排名越靠前
2,竞价排名:谁钱多谁排名高
十二,通用爬虫的缺点
1,只能提供和文本相关的内容(html,word,pdf)等,但是不能提供多媒体(音乐,图片,视频)和二进制文件(程序,脚本)等
2,不能理解人类语义上的检索
十三,聚焦网络爬虫
1,概念:爬虫程序员写的针对某种内容的爬虫
2,特点:会针对某种特定的内容取爬取信息,而且会保证信息和需求尽可能相关(面向主题爬虫,面向需求爬虫)
十四, 增量式网络爬虫
十五,深层网络爬虫