NodeJS爬虫

【毕设作搜索引擎,先搭爬虫系统,挖个坑慢慢写。】html

基于phantomjs,语言是java,以前纠结了好久用java仍是用node。由于后续还有分词、建索引balabala的,java有不少成熟的框架能够直接用。
今天听海洋大大的一句话:“年轻人才会纠结用什么语言”java

爬虫部分

爬虫分三大功能块级:node

1.downloader 请求模块,对指定URL发起请求
2.pageProcess 处理抓回来的页面代码,过滤代码取出文本
3.pipeLine 数据库操做

1、Downloader

基于phantomjs模块,对指定的url进行抓取,返回原生代码。算法

为何要用phantomjs呢?由于能够完美解决页面数据异步加载问题,省时省力省心哈哈哈哈~~!数据库

(一)抓取的URL服务器挂掉了,须要等待好久。服务器

解决方案:创建url黑名单,设置最大超时时间为15s,超过加载时间3次的url列入黑名单。下次再碰到该url直接跳过。

(二)网站特别慢,须要加载几十秒才能返回所有数据。框架

解决方案:同上

(三)flash页面没法抓取,主要是页游页面。异步

解决方案:还木有解决哈哈哈哈。

2、pageProcess

处理页面代码模块。downloader抓回来的源代码推送到这里。网站

一、各类字符串处理,去掉多余的html,留下文本,推入已抓取数据。搜索引擎

二、借用cheerio,筛选出源码里面的url,通过pipeLine推入待抓取队列。

助攻爬虫部分

1、排重

排重分两部分:一、URL排重,二、数据排重。

URL排重利用Bloom Filter,很容易实现。

数据排重:因为大量网站显示的内容相似,所以只要抓取一个就好了。如何排重?还没准备好算法。数据量比较大,,每抓取一次都遍历?二分法用上了。

2、线程

每一个CPU核开两个线程,多台服务器一块儿抓。

相关文章
相关标签/搜索