您好,登錄后才能下訂單哦!
小編給大家分享一下java如何寫網(wǎng)絡(luò)爬蟲,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁(yè)蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁(yè)追逐者),是一種按照一定的規(guī)則,自動(dòng)地抓取萬(wàn)維網(wǎng)信息的程序或者腳本。
聚焦爬蟲工作原理以及關(guān)鍵技術(shù)概述
網(wǎng)絡(luò)爬蟲是一個(gè)自動(dòng)提取網(wǎng)頁(yè)的程序,它為搜索引擎從萬(wàn)維網(wǎng)上下載網(wǎng)頁(yè),是搜索引擎的重要組成。傳統(tǒng)爬蟲從一個(gè)或若干初始網(wǎng)頁(yè)的URL開始,獲得初始網(wǎng)頁(yè)上的URL,在抓取網(wǎng)頁(yè)的過(guò)程中,不斷從當(dāng)前頁(yè)面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。聚焦爬蟲的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁(yè)分析算法過(guò)濾與主題無(wú)關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁(yè)URL,并重復(fù)上述過(guò)程,直到達(dá)到系統(tǒng)的某一條件時(shí)停止。另外,所有被爬蟲抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯,進(jìn)行一定的分析、過(guò)濾,并建立索引,以便之后的查詢和檢索;對(duì)于聚焦爬蟲來(lái)說(shuō),這一過(guò)程所得到的分析結(jié)果還可能對(duì)以后的抓取過(guò)程給出反饋和指導(dǎo)。
相對(duì)于通用網(wǎng)絡(luò)爬蟲,聚焦爬蟲還需要解決三個(gè)主要問(wèn)題:
(1) 對(duì)抓取目標(biāo)的描述或定義;
(2) 對(duì)網(wǎng)頁(yè)或數(shù)據(jù)的分析與過(guò)濾;
(3) 對(duì)URL的搜索策略。
網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)原理
根據(jù)這種原理,寫一個(gè)簡(jiǎn)單的網(wǎng)絡(luò)爬蟲程序 ,該程序?qū)崿F(xiàn)的功能是獲取網(wǎng)站發(fā)回的數(shù)據(jù),并提取之中的網(wǎng)址,獲取的網(wǎng)址我們存放在一個(gè)文件夾中。除了提取網(wǎng)址,我們還可以提取其他各種我們想要的信息,只要修改過(guò)濾數(shù)據(jù)的表達(dá)式則可以。
以下是利用Java模擬的一個(gè)程序,提取新浪頁(yè)面上的鏈接,存放在一個(gè)文件里
源代碼如下:
package com.cellstrain.icell.util; import java.io.*; import java.net.*; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * java實(shí)現(xiàn)爬蟲 */ public class Robot { public static void main(String[] args) { URL url = null; URLConnection urlconn = null; BufferedReader br = null; PrintWriter pw = null; // String regex = "http://[\\w+\\.?/?]+\\.[A-Za-z]+"; String regex = "https://[\\w+\\.?/?]+\\.[A-Za-z]+";//url匹配規(guī)則 Pattern p = Pattern.compile(regex); try { url = new URL("https://www.rndsystems.com/cn");//爬取的網(wǎng)址、這里爬取的是一個(gè)生物網(wǎng)站 urlconn = url.openConnection(); pw = new PrintWriter(new FileWriter("D:/SiteURL.txt"), true);//將爬取到的鏈接放到D盤的SiteURL文件中 br = new BufferedReader(new InputStreamReader( urlconn.getInputStream())); String buf = null; while ((buf = br.readLine()) != null) { Matcher buf_m = p.matcher(buf); while (buf_m.find()) { pw.println(buf_m.group()); } } System.out.println("爬取成功^_^"); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } finally { try { br.close(); } catch (IOException e) { e.printStackTrace(); } pw.close(); } } }
以上是java如何寫網(wǎng)絡(luò)爬蟲的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。