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核開兩個線程,多臺服務器一塊兒抓。

相關文章
相關標籤/搜索