如何java寫/實現網絡爬蟲抓取網頁

很多時候我們需要一些數據或者信息,而這些信息可能是收費的,不公開的,也可能是信息量比較大,如果單純靠我們手工來做的話可能比較浪費時間,所以我們需要寫一個網絡爬蟲,高效地將自己需要的信息抓取下來,在這裡,小崔以java語言來演示一下如何實現網絡爬蟲,原始碼會附在最後。

工具/原料

電腦
java集成開發環境

方法/步驟

首先,在我們動手寫代碼之前,我們先要想清楚這個爬蟲要具備什麼功能才可以把網頁爬取下來,還有爬蟲要採用什麼數據結構來實現?能否控制爬蟲自動重啟?

思考完以上問題之後,我們需要確定要寫幾個類來實現這些功能,這樣我們就得把爬蟲的幾個類的功能用圖來表示一下,在這裡小崔只實現基本的功能,所以畫的圖比較簡單,但是如果大家把這個搞懂的話,在自己添加需要的特定功能即可。

下面我們要根據我們要解決的問題,一個一個來設計我們的各個類。我們的問題主要有:

①.如何下載一個網頁②.如何從一個網頁中提取URL③.如何構建URL隊列④如何讓爬蟲開始工作

第一個問題,解決如何下載網頁

這裡我們要用一下第三方的開源包來完成此功能,因為java自帶的實現此功能的包不太好用,請自行百度將此包下載下來。包的名稱為HttpClient。

可能很多朋友還不知道這個包該怎麼用,為了減少大家的麻煩,節省大家的時間,小崔在這裡給大家介紹一下這個包的用法。

(1)通過get的⽅方式獲取到Response對象。(2)獲取Response對象的Entity。(3)通過Entity獲取到InputStream對象,然後對返回內容進⾏行處理。

可能很多新手只對我這麼一說不能深切的體會到其中的內涵,下面我將其以代碼的形式展現出來。

下面是獲取Response對象的Entity的代碼示例

通過Entity獲取到InputStream對象,然後對返回內容進⾏行處理

好了,第一個問題我們就解決了,下面我們來解決第二個問題,如何從⼀一個⺴⽹網⻚頁中提取URL

提取URL,這裡我們還是使用一款第三方的開源jar包,Jsoup是一款Java的HTML解析器,可以直接解析某個URL地址、HTML文本內容,它提供了一套非常省力的API,可以通過DOM、CSS以及類似於JQuery的操作方法來取出和操作數據。

利⽤用JSOUP從⽂文件中加載網頁File input = new File("D:/test.html");Document doc = Jsoup.parse(input,"UTF-8","網址/");請⼤大家注意最後⼀一種HTML ⽂文檔輸⼊入⽅方式中的parse 的第三個參數,為什麼需要在這⾥里指定⼀一個⺴⽹網址呢(雖然可以不指定,如第⼀一種⽅方法)?因為HTML ⽂文檔中會有很多例如連結、圖⽚片以及所引⽤用的外部腳本、css⽂文件等,⽽而第三個名為baseURL 的參數的意思就是當HTML ⽂文檔使⽤用相對路徑⽅方式引⽤用外部⽂文件時,jsoup會⾃自動為這些URL 加上⼀一個前綴,也就是這個baseURL。例如<a href=/project>開源軟體</a> 會被轉換成<a href=⺴⽹網址>開源軟體</a>。

下面是解析並提取HTML 元素實例代碼

下面我們來解決第三個問題,如何構建URL隊列

要想構建URL隊列,我們首先需要對爬蟲中的隊列進行分析,爬⾍蟲中的隊列分析如下:①初始種⼦子隊列②爬⾍蟲開始的地⽅方③只使⽤用⼀一次④ArrayList⾜足矣⑤待爬取隊列⑥每次從隊列取出URL去爬⑦爬過的URL需要從隊列中刪除⑧LinkedList⑨已爬取隊列每次爬取過的URL要添加到隊列中每次從網頁中發現新的URL時,要判斷該URL是否已經存在於已爬取隊列(查找),如果不存在,則將該URL添加到待爬去隊列Hashtable

解決完這些問題,一個簡單的爬蟲就完成了,下面就可以讓你的爬蟲開始工作了,如果需要某些特定的功能,自己在類里實現相應的功能即可。

注意事項

要下載對jar包,版本不一樣沒有影響
本經驗為小崔原創,如果您覺得對您有幫助,請記得投一票哦!

相關文章

  1. 怎麼用Java程序抓取網頁原始碼?

    怎麼用java程序抓取網頁原始碼?如果抓取代碼都用程序來做的話,相信要快很多.程序如下:       import java.io.BufferedReader;import java.io.IOEx ...
  2. 怎麼讓搜尋引擎爬蟲抓取自己的網站

    我們經常說做優化要讓搜尋引擎從種子站點開始抓取,基於搜尋引擎的蜘蛛型結構,這種非線性的網頁組織結構,就會出現一個抓取順序的問題,這種抓取順序的策略必須保證儘可能地抓取所有網頁. 方法/步驟 一般來說, ...
  3. 利用Web Scraper爬蟲抓取笑話

    利用Web Scraper爬蟲抓取笑話,僅供娛樂,博君一笑. 工具/原料 Chrome瀏覽器 Web Scrape插件 方法/步驟 搭建好環境,Chrome瀏覽器安裝Web Scrape插件,不會的, ...
  4. PHP抓取網頁failed to open stream解決方案

    本教程完美解決PHP抓取網頁failed to open stream: HTTP request failed!遇到的問題. 工具/原料 PHP一系列軟體 電腦一台 方法/步驟 如圖所示:抓取失敗了 ...
  5. 搜尋引擎抓取網頁原理學習筆記

    做正規seo技術必會的搜尋引擎抓取網頁原理應該是很複雜的.可以寫洋洋灑灑的長篇論文.這裡就將我自己學習到的網頁抓取原理記錄一下.筆記應該不夠完整隻將重要過程做個介紹 步驟/方法 做正規seo技術必會的 ...
  6. 一次抓取網頁中所有圖片

    一次抓取網頁中所有圖片 我們上網找素材的時候,經常會遇到一些網頁裡面用了很多自己能夠用到的圖片,但是每一個都要單擊右鍵,然後圖片另存為,很是麻煩.其實藉助SnagIt抓圖軟體可以一次抓取網頁內所有圖片 ...
  7. 小樂圖客攻略:[16]如何抓取網頁CSS背景圖

    我們知道在網頁取圖時,經常遇到一些使用小樂圖客取不到的圖.這時就需要考慮這些圖片是否屬於CSS背景圖,實際圖片地址是否隱藏在CSS文件中.本文分享給大家如何批量從網站CSS文件中抓取背景圖的方法. 工 ...
  8. 搜尋引擎抓取網頁的方法

    愈來愈多的站長加入到了seo的行列之中,新站長需要知道很多的基礎知識,才能開始優化之旅,有很多半罐子的理論有時會誤導你,網站優化給新手站長推薦Google給網站管理員的網站站長指南.這是一本簡潔的精確 ...
  9. 抓取網頁指定內容(資料),獲取網頁里的圖片

    最近有遇到同學反饋,網頁里的那些沒有特徵值的文本元素不知道怎麼獲取.以及,不知道怎麼獲取保存網頁里出現的圖片. 工具/原料 按鍵精靈2014 方法/步驟 獲取網頁指定文字: 目前按鍵支持的元素特徵值有 ...
  10. 如何抓取網頁或考試軟體中不能複製的文字

    一些網頁或軟體中的文字被限制,不能複製.而我們卻需要把這些文字複製出來,那麼怎麼才能把這些被限制的文字複製出來呢,下面我給您分享一個好方法:那就是利用圖片文字抓取工具軟體把這些被限制的文字提取出來.這 ...
  11. 如何抓取網頁製作製作 mdx 格式詞典

    一個簡單得不能再簡單的網頁抓取然後製作mdx教程 工具/原料 作業系統:Windows 7 旗艦版64位 抓取工具:wget 文本處理:EditPlus, UltraEdit, TextForever ...
  12. 各種瀏覽器抓取網頁圖片技巧

    各種瀏覽器抓取網頁圖片技巧 工具/原料 電腦上安裝好相應的瀏覽器即可 方法/步驟 先說下360的單張圖片抓取 art+滑鼠點擊想要得到的相應圖片,然後保存到相應位置即可. 360的整個頁面圖片的抓取 ...
  13. 怎樣抓取網頁中的flash動畫

    在網頁中抓取flash動畫,沒有下載連結也可獲得flash. 工具 閃客名捕 閃客精靈 步驟/方法 在安裝碩思閃客精靈的時候,閃客名捕會自動安裝在瀏覽器中:重啟瀏覽器,在瀏覽器的工具欄中會增加這個圖標 ...
  14. 如何批量抓取網頁中的所有圖片

    批量抓取圖片 工具/原料 百度瀏覽器 方法/步驟 百度搜尋百度瀏覽器,下載 打開百度瀏覽器,在網頁右側找到"菜單"-點擊"我的應用" 點擊"打開應用中 ...
  15. 使用八爪魚採集器抓取網頁數據

    php抓取網頁內容比較常用的是藉助第三方類編寫抓取代碼,其中QueryList是一個基於phpQuery的通用列表採集類,是一個簡單. 靈活.強大的採集工具,也比較常用,但是對於一些不用代碼想要抓取網 ...
  16. 建站之路028火車頭採集器抓取網頁文章

    火車頭採集器是一款網頁數據採集器,它可以快速的對網頁上數據信息進行規範性的採集,包括圖片,文字,表格,連結,手機,郵箱等.實現準確高效的實時抓取數據 擁有強大的採集功能,能夠採集那些需要登陸才能查看的 ...
  17. Excel如何抓取網頁數據之JSON數據抓取

    Excel 2013以後的版本提供了WEBSERVICE和FILTERXML函數可用於網頁數據抓取,但只能抓取XML格式的數據.而現在很多網站的網頁或接口返回的都是HTML或JSON數據,那麼如何精確 ...
  18. 如何抓取網頁小遊戲中swf內容。

    在我們的生活中,我們時常會玩一些小遊戲娛樂,但有時又斷網,這時就可以把遊戲抓取在本地中玩. 工具/原料 秋風網頁Flash抓取器 除4399外的遊戲網頁小遊戲 方法/步驟 本文以7K7K小遊戲中的一個 ...
  19. 如何抓取網頁中的視頻

    平時瀏覽網頁看到自己喜歡的視頻想要download下來,卻發現沒有下載按鈕,相信很多小夥伴都有過類似的經歷,今天小編教大家如何使用goole瀏覽器抓取網頁中的視頻,希望能對大家產生幫助. 工具/原料 ...
  20. js如何抓取網頁數據

    js如何抓取網頁數據?下面我們來看看吧. 工具/原料 pc 方法/步驟 首先在根節點document中監聽所有需要抓取的事件. 在元素事件傳遞中,捕獲階段獲取事件信息,進行埋點. 通過getBound ...