剛開始接觸java爬蟲,在這里是搜索網上做一些理論知識的總結
主要參考文章:gitchat 的java 網絡爬蟲基礎入門,好像要付費,也不貴,感覺內容對新手很友好。
一、爬蟲介紹
網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網下載網頁,是搜索引擎的重要組成部分。
傳統爬蟲:
獲得URL -》放入隊列 -》抓取網頁,分析信息 -》新的URL -》放入隊列 -》抓取網頁,分析信息... -》滿足一定條件,停止。
聚焦爬蟲:
根據一定的網頁分析算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。再進一步根據搜索策略從隊列中選擇下一步的URL,重復..直到滿足一定條件停止。除此之外,被爬蟲抓取的網頁將會被系統存儲,進行一定的分析、過濾,並建立索引,以便之后的查詢和減少。
相對於通用網絡爬蟲,聚焦爬蟲還需解決三個問題:
- 對抓取目標的描述或定義。
- 對網頁或數據的分析與過濾。
- 對URL的搜索策略。
網絡爬蟲設計的領域有很多,需要我們掌握一門基礎編程語言(最好是已經具備成熟API的語言),需要了解HTTP協議、了解網絡服務器、數據庫、前端知識、網絡安全等...
分類:
按照系統結構和實現技術,大致可以分為以下幾種類型:通用網絡爬蟲、聚焦網絡爬蟲、增量式網絡爬蟲、深層網絡爬蟲等。
通用網絡爬蟲:爬行對象從一些種子URL擴充到整個Web,主要為門戶站點搜索引擎和大型Web服務提供商采集數據。
聚焦網絡爬蟲:又稱主體網絡爬蟲,是指選擇性地爬那些與預定義好的主題相關的頁面,和通用爬蟲比具體上面已經介紹過了。
增量網絡爬蟲:對已下載網頁采取增量式更新和只爬行新產生的或者已經發生變化頁面的爬蟲,它能夠在一定程度上保證爬行的頁面是盡可能新的頁面,歷史已經采集過的頁面不重復采集。
常見案例:論壇訂單評論數據的采集(評論數據只采集最近幾天或者最近幾月的用戶所發的評論)
Deep Web爬蟲:指大部分內容不能通過靜態鏈接獲取,而大部分我們需要的數據都是在網頁的動態鏈接產生的頁面,即Deep Web信息,Deep Web也是一個爬蟲框架,在此暫時不深究。
網絡爬蟲的爬行策略
深度優先搜索策略、廣度優先搜索策略。