2018年6月23日 星期六

我的爬蟲進化史

JN只有看網路教學,沒有看任何一本書,所以現在自己所寫爬蟲的架構多半是靠自己發想,不知不覺也越做越有組織架構,想來紀錄今天的地步。


一、最初的爬蟲:
執行一次爬取一頁,沒有保存內容。

二、迴圈爬蟲:
可以查取多頁,沒有保存內容,中途斷開又得重來。

三、記事本紀錄之迴圈爬蟲:
用不同名稱之記事本保存爬取到各種內容。

-----分水嶺:斷點重續----

四、導入「os」,三號之爬蟲:
將保存內容區分,如依文章ID創新資料夾,方便閱覽結果。如果內容已存在,快速跳到下一爬取項目。

-----分水嶺:資料庫----

五、導入資料庫之爬蟲:
爬取到的內容存去資料庫,不是放到新資料夾。

-----分水嶺:特殊條件排除----

六、任務資料表之爬蟲:
在爬蟲開始之前,能夠快速地從任務資料表找到斷點並續開,或是將特定狀況(如已爬盡所有內容)從爬蟲任務作排除。不只存放爬取內容,也會與添加主鍵型資訊一起納入資料表。

-----分水嶺:爬蟲內容影響接下來爬蟲----

七、能操作資料庫之多類爬蟲:
依照爬取的內容,調整資料表,或創建資料表,或修改特定欄位。強化六號爬蟲的限制,爬取內容也不是只有單一種類,並且還能夠影響接下來的爬蟲項目。

-----分水嶺:設定任務後才爬蟲----

八、任務管理器之爬蟲:
可以設定達到特定條件(如每周一)才進行爬蟲,更具智慧地且減少不必要任務之爬蟲。使用的資料庫超過一個,並且盡量正規化各種資料庫,爬蟲以查詢的方式去找尋所需要的資料,而不是遞迴資料搜尋。



進化史除了是改善爬蟲效率,還有改善其他應用的效率,如資料庫:創建查詢,盡量不開存放大筆數據的資料表。以及沒有寫到的爬蟲內容應用,如統計分析,自動化圖表呈現。

爬蟲只是個蒐集資料的工具,在這一工具內,還能順便將蒐集的資料做整理與清理。但是,如果蒐集到一堆資料不會用,就只是浪費硬碟空間。那麼要如何設計爬蟲?要從後端開始往前規劃,功能決定形式,這樣就能利用爬蟲只得到所要的資訊,也能確保爬蟲得到的是所要的資訊。