首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 網頁爬蟲核心原理與實戰範例完整解析

     編輯:Java 相關知識

Java 爬蟲核心概念

網頁爬蟲的本質其實很直觀:程式模擬瀏覽器行為,打開目標網頁的原始碼,透過特定規則(如正則表達式)匹配並提取所需資訊,最後將結果儲存。這篇文章將帶你從零開始理解 Java 爬蟲的運作機制,並提供可直接執行的完整程式碼範例。

核心實作步驟拆解

1. 建立網路連線

首先使用 java.net.URL 類別建立目標網址連線:

URL url = new URL("https://www.cnblogs.com/Renyi-Fan/p/6896901.html");

2. 讀取網頁內容

透過 BufferedReader 配合 InputStreamReader 逐行讀取網頁原始碼:

BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));

3. 定義提取規則

以電子郵件提取為例,使用正則表達式定義匹配模式:

String mail_regex = "\\w+@\\w+(\\.\\w+)+";

4. 儲存匹配結果

使用 ArrayList 收集所有符合規則的資料:

List<String> list = new ArrayList<String>();

完整程式碼實作

以下是整合上述步驟的完整爬蟲類別,包含從網路抓取與從本地檔案讀取兩種模式:

import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Spider {
    public static void main(String[] args) throws IOException {
        List<String> list = getMailsByWeb();
        for(String mail : list){
            System.out.println(mail);
        }
    }

    public static List<String> getMailsByWeb() throws IOException{
        URL url = new URL("https://www.cnblogs.com/Renyi-Fan/p/6896901.html");
        BufferedReader bufr = new BufferedReader(new InputStreamReader(url.openStream()));
        String mail_regex = "\\w+@\\w+(\\.\\w+)+";
        List<String> list = new ArrayList<String>();
        Pattern p = Pattern.compile(mail_regex);
        String line = null;
        while((line = bufr.readLine()) != null){
            Matcher m = p.matcher(line);
            while(m.find()){
                list.add(m.group());
            }
        }
        return list;
    }

    public static List<String> getMails() throws IOException{
        BufferedReader bufr = new BufferedReader(new FileReader("c:\\mail.html"));
        String mail_regex = "\\w+@\\w+(\\.\\w+)+";
        List<String> list = new ArrayList<String>();
        Pattern p = Pattern.compile(mail_regex);
        String line = null;
        while((line = bufr.readLine()) != null){
            Matcher m = p.matcher(line);
            while(m.find()){
                list.add(m.group());
            }
        }
        return list;
    }
}

執行結果展示

程式執行後將輸出提取到的電子郵件地址:

abc1@sina.com.cn
1@1.1

關鍵技術點總結

  • Pattern 與 Matcher:Java 正則表達式核心類別,Pattern.compile() 編譯規則,matcher() 建立匹配器,find() 尋找下一個匹配項,group() 取得匹配內容
  • 串流處理:BufferedReader.readLine() 逐行讀取,適合處理大型網頁避免記憶體溢位
  • 例外處理:網路操作必須處理 IOException,確保程式健壯性

這個範例展示了爬蟲最基礎的雛形,實際專案中通常會搭配 Jsoup、HttpClient 等框架處理更複雜的場景,如動態網頁渲染、反爬蟲機制應對、分散式爬取等進階需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved