使用Java實現網絡爬蟲


網絡爬蟲

網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區中間,更經常的稱為網頁追逐者),是一種按照一定的規則,自動地抓取萬維網信息的程序或者腳本。

另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲網絡蜘蛛是通過網頁的鏈接地址來尋找網頁,從網站某一個頁面(通常是首頁)開始,讀取

網頁的內容,找到在網頁中的其它鏈接地址,然后通過這些鏈接地址尋找下一個網頁,這樣一直循環下去,直到把這個網站所有的網頁都抓取完為止。如果把整

個互聯網當成一個網站,那么網絡蜘蛛就可以用這個原理把互聯網上所有的網頁都抓取下來。所以要想抓取網絡上的數據,不僅需要爬蟲程序還需要一個可以接

受”爬蟲“發回的數據並進行處理過濾的服務器,爬蟲抓取的數據量越大,對服務器的性能要求則越高。

1 聚焦爬蟲工作原理以及關鍵技術概述

網絡爬蟲是一個自動提取網頁的程序,它為搜索引擎從萬維網上下載網頁,是搜索引擎的重要組成。傳統爬蟲從一個或若干初始網頁的URL開始,獲得初始網頁上

的URL,在抓取網頁的過程中,不斷從當前頁面上抽取新的URL放入隊列,直到滿足系統的一定停止條件。聚焦爬蟲的工作流程較為復雜,需要根據一定的網頁分析

算法過濾與主題無關的鏈接,保留有用的鏈接並將其放入等待抓取的URL隊列。然后,它將根據一定的搜索策略從隊列中選擇下一步要抓取的網頁URL,並重復上

述過程,直到達到系統的某一條件時停止。另外,所有被爬蟲抓取的網頁將會被系統存貯,進行一定的分析、過濾,並建立索引,以便之后的查詢和檢索;對於聚

焦爬蟲來說,這一過程所得到的分析結果還可能對以后的抓取過程給出反饋和指導。

相對於通用網絡爬蟲,聚焦爬蟲還需要解決三個主要問題:

(1) 對抓取目標的描述或定義;

(2) 對網頁或數據的分析與過濾;

(3) 對URL的搜索策略

分類

網絡爬蟲按照系統結構和實現技術,大致可以分為以下幾種類型:通用網絡爬蟲(General Purpose Web Crawler)、聚焦網絡爬蟲(Focused Web Crawler)、

增量式網絡爬蟲(Incremental Web Crawler)、深層網絡爬蟲(Deep Web Crawler)。 實際的網絡爬蟲系統通常是幾種爬蟲技術相結合實現的。

網絡爬蟲的實現原理

根據這種原理,寫一個簡單的網絡爬蟲程序 ,該程序實現的功能是獲取網站發回的數據,並提取之中的網址,獲取的網址我們存放在一個文件夾中,關於如何就從網

站獲取的網址進一步循環下去獲取數據並提取其中其他數據這里就不在寫了,只是模擬最簡單的一個原理則可以,實際的網站爬蟲遠比這里復雜多,深入討論就太多

了。除了提取網址,我們還可以提取其他各種我們想要的信息,只要修改過濾數據的表達式則可以。以下是利用Java模擬的一個程序,提取新浪頁面上的鏈接,存放

在一個文件里

源代碼如下

package com.cellstrain.icell.util;

import java.io.*;
import java.net.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* java實現爬蟲
*/
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匹配規則
Pattern p = Pattern.compile(regex);
try {
url = new URL("https://www.rndsystems.com/cn");//爬取的網址、這里爬取的是一個生物網站
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();
}
}
}

在idea的運行結果如下:

看一下D盤有沒有SiteURL.txt文件

已經成功生成SiteURL文件,打開可以看到里面都是抓取到的url

以上就是一個簡單的java爬取網站的url實例,希望能夠幫到你哦

 

詳細介紹請查看全文1:https://cnblogs.com/qzf/
詳細介紹請查看全文2:https://cnblogs.com/qian/

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM