首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java網絡編程實戰:從零構建簡易HTTP爬蟲抓取百度百科內容

     編輯:程式設計綜合問答

前言

在Java網絡編程中,HTTP請求與數據抓取是基礎且核心的技能。許多初學者希望能編寫一個程序,在控制台輸入關鍵字後自動獲取百度百科的相關內容。本文將帶你從零開始,構建一個簡易的Java HTTP爬蟲,實現關鍵字搜索與內容提取。

核心思路

實現該功能主要分為三步:

  1. 使用HttpURLConnection或第三方庫(如OkHttp、HttpClient)發送GET請求至百度百科搜索接口。
  2. 解析返回的HTML頁面,提取目標內容(可使用Jsoup等解析庫)。
  3. 在控制台交互循環中接收用戶輸入,調用爬蟲邏輯並輸出結果。

代碼示例

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class BaikeCrawler {
    public static void main(String[] args) throws Exception {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("請輸入搜索關鍵字:");
        String keyword;
        while ((keyword = reader.readLine()) != null) {
            if (keyword.trim().isEmpty()) continue;
            String content = fetchBaikeContent(keyword);
            System.out.println("=== 百度百科內容 ===");
            System.out.println(content);
            System.out.print("\n請輸入下一個關鍵字(直接回車退出):");
        }
    }

    private static String fetchBaikeContent(String keyword) throws Exception {
        String urlStr = "https://baike.baidu.com/item/" + URLEncoder.encode(keyword, "UTF-8");
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        conn.setRequestProperty("User-Agent", "Mozilla/5.0");

        StringBuilder html = new StringBuilder();
        try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"))) {
            String line;
            while ((line = in.readLine()) != null) html.append(line);
        }

        Document doc = Jsoup.parse(html.toString());
        Element summary = doc.selectFirst(".lemma-summary");
        return summary != null ? summary.text() : "未找到相關內容";
    }
}

進階建議

生產環境中建議:

  • 加入請求重試與超時控制
  • 使用連接池管理HTTP連接
  • 遵守robots.txt並控制爬取頻率
  • 處理反爬蟲機制(如驗證碼、IP封禁)

總結

通過本文的示例,你可以快速掌握Java HTTP網絡請求與HTML解析的基本套路。實際項目中,推薦使用成熟的爬蟲框架(如WebMagic、Crawler4j)提高開發效率與穩定性。

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