開源JAVA單機爬蟲框架簡介,優缺點分析
網際網路營銷時代,獲取海量資料成為營銷推廣的關鍵。而獲得資料的最佳方式就是利用爬蟲去抓取。但是爬蟲的使用少不了代理ip太陽HTTP的支撐。當然網路上現在有很多開源爬蟲,大大方便了大家使用。但是開源網路爬蟲也是有優點也有缺點,清晰認知這一點才能達成自己的目標。
對於爬蟲的功能來說。使用者比較關心的問題往往是:
1)爬蟲可以爬取ajax資訊麼?
網頁上有一些非同步載入的資料,爬取這些資料有兩種方法:使用模擬瀏覽器(問題1中描述過了),或者分析ajax的http請求,自己生成ajax請求的url,獲取返回的資料。如果是自己生成ajax請求,使用開源爬蟲的意義在哪裡?其實是要用開源爬蟲的執行緒池和URL管理功能(比如斷點爬取)。
如果我已經可以生成我所需要的ajax請求(列表),如何用這些爬蟲來對這些請求進行爬取?
爬蟲往往都是設計成廣度遍歷或者深度遍歷的模式,去遍歷靜態或者動態頁面。爬取ajax資訊屬於deep web(深網)的範疇,雖然大多數爬蟲都不直接支援。但是也可以透過一些方法來完成。比如WebCollector使用廣度遍歷來遍歷網站。爬蟲的第一輪爬取就是爬取種子集合(seeds)中的所有url。簡單來說,就是將生成的ajax請求作為種子,放入爬蟲。用爬蟲對這些種子,進行深度為1的廣度遍歷(預設就是廣度遍歷)。
2)爬蟲支援多執行緒麼、爬蟲能用代理麼、爬蟲會爬取重複資料麼、爬蟲能爬取JS生成的資訊麼?
能不能爬js生成的資訊和爬蟲本身沒有太大關係。爬蟲主要是負責遍歷網站和下載頁面。爬js生成的資訊和網頁資訊抽取模組有關,往往需要透過模擬瀏覽器(htmlunit,selenium)來完成。這些模擬瀏覽器,往往需要耗費很多的時間來處理一個頁面。所以一種策略就是,使用這些爬蟲來遍歷網站,遇到需要解析的頁面,就將網頁的相關資訊提交給模擬瀏覽器,來完成JS生成資訊的抽取。
3)爬蟲怎麼儲存網頁的資訊?
有一些爬蟲,自帶一個模組負責持久化。比如webmagic,有一個模組叫pipeline。透過簡單地配置,可以將爬蟲抽取到的資訊,持久化到檔案、資料庫等。還有一些爬蟲,並沒有直接給使用者提供資料持久化的模組。比如crawler4j和webcollector。讓使用者自己在網頁處理模組中新增提交資料庫的操作。至於使用pipeline這種模組好不好,就和運算元據庫使用ORM好不好這個問題類似,取決於你的業務。
4)爬蟲怎麼爬取要登陸的網站?
這些開源爬蟲都支援在爬取時指定cookies,模擬登陸主要是靠cookies。至於cookies怎麼獲取,不是爬蟲管的事情。你可以手動獲取、用http請求模擬登陸或者用模擬瀏覽器自動登陸獲取cookie。
5)爬蟲怎麼抽取網頁的資訊?
開源爬蟲一般都會整合網頁抽取工具。主要支援兩種規範:CSS SELECTOR和XPATH。至於哪個好,這裡不評價。
6)明明程式碼寫對了,爬不到資料,是不是爬蟲有問題,換個爬蟲能解決麼?
如果程式碼寫對了,又爬不到資料,換其他爬蟲也是一樣爬不到。遇到這種情況,要麼是網站把你封了,要麼是你爬的資料是javascript生成的。爬不到資料透過換爬蟲是不能解決的。
7)哪個爬蟲的設計模式和構架比較好?
設計模式對軟體開發沒有指導性作用。用設計模式來設計爬蟲,只會使得爬蟲的設計更加臃腫。
至於構架,開源爬蟲目前主要是細節的資料結構的設計,比如爬取執行緒池、任務佇列,這些大家都能控制好。
8)哪個爬蟲可以判斷網站是否爬完、那個爬蟲可以根據主題進行爬取?
爬蟲無法判斷網站是否爬完,只能儘可能覆蓋。
至於根據主題爬取,爬蟲之後把內容爬下來才知道是什麼主題。所以一般都是整個爬下來,然後再去篩選內容。如果嫌爬的太泛,可以透過限制URL正則等方式,來縮小一下範圍。
9)爬蟲速度怎麼樣?
單機開源爬蟲的速度,基本都可以講本機的網速用到極限。爬蟲的速度慢,往往是因為使用者把執行緒數開少了、網速慢,或者在資料持久化時,和資料庫的互動速度慢。而這些東西,往往都是使用者的機器和二次開發的程式碼決定的。
10)網頁可以呼叫爬蟲麼?
爬蟲的呼叫是在Web的服務端呼叫的,平時怎麼用就怎麼用,這些爬蟲都可以使用。
11)爬蟲被網站封了怎麼辦?
爬蟲被網站封了,一般用多代理(隨機代理)就可以解決。但是這些開源爬蟲一般沒有直接支援隨機代理ip的切換。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31561288/viewspace-2220354/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python中爬蟲模組有哪些?優缺點介紹!Python爬蟲
- 分享6個Java框架及優缺點介紹Java框架
- docker簡介以及優缺點Docker
- Java 爬蟲專案實戰之爬蟲簡介Java爬蟲
- 部分聚類演算法簡介及優缺點分析聚類演算法
- python爬蟲:爬蟲的簡單介紹及requests模組的簡單使用Python爬蟲
- Java單例模式:缺點和優點Java單例模式
- 分享個人開源爬蟲框架爬蟲框架
- python解決反爬蟲方法的優缺點對比Python爬蟲
- DHCP伺服器的優缺點簡介伺服器
- Python爬蟲 --- 2.3 Scrapy 框架的簡單使用Python爬蟲框架
- phpspider簡單快速上手的php爬蟲框架PHPIDE爬蟲框架
- NUMA架構介紹及優缺點分析架構
- 爬蟲與反爬蟲技術簡介爬蟲
- 常見物聯網模型優缺點簡介模型
- Python爬蟲教程-30-Scrapy 爬蟲框架介紹Python爬蟲框架
- 開源堡壘機是什麼?開源堡壘機的優缺點是什麼?
- Python爬蟲之scrapy框架簡介及環境安裝Python爬蟲框架
- 手把手教你寫網路爬蟲(3):開源爬蟲框架對比爬蟲框架
- Python3 | 簡單爬蟲分析網頁元素Python爬蟲網頁
- 五大 JAVA Web 框架的優缺點對比JavaWeb框架
- 簡單的爬蟲程式爬蟲
- python簡單爬蟲(二)Python爬蟲
- Anaconda的開發環境介紹以及簡單爬蟲的應用開發環境爬蟲
- 雲堡壘機分散式叢集部署優缺點簡單說明分散式
- 簡單介紹常見的三種架構設計模式及其優缺點!架構設計模式
- 機架式伺服器的簡單介紹及其優點伺服器
- 乾貨分享!三大Java框架的優缺點對比Java框架
- 開源是什麼意思?開源軟體優缺點有哪些?
- java實現一個簡單的爬蟲小程式Java爬蟲
- 簡單瞭解python爬蟲Python爬蟲
- Java學習筆記—開源框架Netty的簡單使用Java筆記框架Netty
- Python 開發簡單爬蟲 (學習筆記)Python爬蟲筆記
- 《Python開發簡單爬蟲》實踐筆記Python爬蟲筆記
- 簡單介紹SpringSecurity框架簡介及與shiro特點對比SpringGse框架
- 三分鐘對視覺化表單設計器開源優點做簡單介紹視覺化
- 簡易多執行緒爬蟲框架執行緒爬蟲框架
- 那些年,我爬過的北科(四)——爬蟲進階之極簡併行爬蟲框架開發爬蟲框架