在Java網絡編程中,HTTP請求與數據抓取是基礎且核心的技能。許多初學者希望能編寫一個程序,在控制台輸入關鍵字後自動獲取百度百科的相關內容。本文將帶你從零開始,構建一個簡易的Java HTTP爬蟲,實現關鍵字搜索與內容提取。
實現該功能主要分為三步:
HttpURLConnection或第三方庫(如OkHttp、HttpClient)發送GET請求至百度百科搜索接口。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() : "未找到相關內容";
}
}
生產環境中建議:
robots.txt並控制爬取頻率通過本文的示例,你可以快速掌握Java HTTP網絡請求與HTML解析的基本套路。實際項目中,推薦使用成熟的爬蟲框架(如WebMagic、Crawler4j)提高開發效率與穩定性。