【毕设作搜索引擎,先搭爬虫系统,挖个坑慢慢写。】html
基于phantomjs,语言是java,以前纠结了好久用java仍是用node。由于后续还有分词、建索引balabala的,java有不少成熟的框架能够直接用。
今天听海洋大大的一句话:“年轻人才会纠结用什么语言”java
爬虫分三大功能块级:node
1.downloader 请求模块,对指定URL发起请求 2.pageProcess 处理抓回来的页面代码,过滤代码取出文本 3.pipeLine 数据库操做
基于phantomjs模块,对指定的url进行抓取,返回原生代码。算法
为何要用phantomjs呢?由于能够完美解决页面数据异步加载问题,省时省力省心哈哈哈哈~~!数据库
(一)抓取的URL服务器挂掉了,须要等待好久。服务器
解决方案:创建url黑名单,设置最大超时时间为15s,超过加载时间3次的url列入黑名单。下次再碰到该url直接跳过。
(二)网站特别慢,须要加载几十秒才能返回所有数据。框架
解决方案:同上
(三)flash页面没法抓取,主要是页游页面。异步
解决方案:还木有解决哈哈哈哈。
处理页面代码模块。downloader抓回来的源代码推送到这里。网站
一、各类字符串处理,去掉多余的html,留下文本,推入已抓取数据。搜索引擎
二、借用cheerio,筛选出源码里面的url,通过pipeLine推入待抓取队列。
排重分两部分:一、URL排重,二、数据排重。
URL排重利用Bloom Filter,很容易实现。
数据排重:因为大量网站显示的内容相似,所以只要抓取一个就好了。如何排重?还没准备好算法。数据量比较大,,每抓取一次都遍历?二分法用上了。
每一个CPU核开两个线程,多台服务器一块儿抓。