小編給大家分享一下java如何寫網(wǎng)絡(luò)爬蟲,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
為任縣等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及任縣網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站建設(shè)、成都網(wǎng)站制作、任縣網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!
網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲(又被稱為網(wǎng)頁蜘蛛,網(wǎng)絡(luò)機(jī)器人,在FOAF社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。
聚焦爬蟲工作原理以及關(guān)鍵技術(shù)概述
網(wǎng)絡(luò)爬蟲是一個自動提取網(wǎng)頁的程序,它為搜索引擎從萬維網(wǎng)上下載網(wǎng)頁,是搜索引擎的重要組成。傳統(tǒng)爬蟲從一個或若干初始網(wǎng)頁的URL開始,獲得初始網(wǎng)頁上的URL,在抓取網(wǎng)頁的過程中,不斷從當(dāng)前頁面上抽取新的URL放入隊(duì)列,直到滿足系統(tǒng)的一定停止條件。聚焦爬蟲的工作流程較為復(fù)雜,需要根據(jù)一定的網(wǎng)頁分析算法過濾與主題無關(guān)的鏈接,保留有用的鏈接并將其放入等待抓取的URL隊(duì)列。然后,它將根據(jù)一定的搜索策略從隊(duì)列中選擇下一步要抓取的網(wǎng)頁URL,并重復(fù)上述過程,直到達(dá)到系統(tǒng)的某一條件時停止。另外,所有被爬蟲抓取的網(wǎng)頁將會被系統(tǒng)存貯,進(jìn)行一定的分析、過濾,并建立索引,以便之后的查詢和檢索;對于聚焦爬蟲來說,這一過程所得到的分析結(jié)果還可能對以后的抓取過程給出反饋和指導(dǎo)。
相對于通用網(wǎng)絡(luò)爬蟲,聚焦爬蟲還需要解決三個主要問題:
(1) 對抓取目標(biāo)的描述或定義;
(2) 對網(wǎng)頁或數(shù)據(jù)的分析與過濾;
(3) 對URL的搜索策略。
網(wǎng)絡(luò)爬蟲的實(shí)現(xiàn)原理
根據(jù)這種原理,寫一個簡單的網(wǎng)絡(luò)爬蟲程序 ,該程序?qū)崿F(xiàn)的功能是獲取網(wǎng)站發(fā)回的數(shù)據(jù),并提取之中的網(wǎng)址,獲取的網(wǎng)址我們存放在一個文件夾中。除了提取網(wǎng)址,我們還可以提取其他各種我們想要的信息,只要修改過濾數(shù)據(jù)的表達(dá)式則可以。
以下是利用Java模擬的一個程序,提取新浪頁面上的鏈接,存放在一個文件里
源代碼如下:
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)址、這里爬取的是一個生物網(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)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!