網路上充斥著各類網址資料庫銷售:軟體發布網址、郵箱地址、論壇鏈接、行業目錄等。這些數據量龐大,絕非人工收集所能完成,背後都是自動化程式利用搜尋引擎批量抓取的成果。本文將詳細講解如何用 Java 實現一個網址收集器,以 Google 和百度為目標搜尋引擎。
搜尋引擎提供的 inurl: 指令是關鍵。它能針對 URL 中包含的特定字串進行篩選。例如許多軟體發布頁面的 URL 含有 publish、submit、tuijian 等關鍵字,結合業務關鍵字即可精準定位目標頁面。程式流程分為三步:
pn、Google 的 start)。百度接受預設 User-Agent,Google 則會檢測並拒絕非瀏覽器請求,必須設置 http.setRequestProperty("User-Agent", "Mozilla/4.0")。編碼方面,百度常用 GB2312,Google 則為 UTF-8。
程式需循環翻頁(每頁 20 條),注意 Google 限制最多 1000 條結果,百度約 760 條,需通過增加關鍵字縮小範圍繞過限制。
// 核心過濾邏輯:排除含 google.com、cache、baidu 等關鍵字的無效鏈接
StringTokenizer token = new StringTokenizer(html, " <>\"");
while (token.hasMoreTokens()) {
String word = token.nextToken();
if (!word.contains("google.com") && !word.contains("cache") && word.length() > 7) {
String url = word.substring(6, word.length() - 1);
saveUrl(url);
}
}
雖然技術實現簡單,但大規模抓取可能違反搜尋引擎服務條款(ToS)與 robots.txt 協議。生產環境建議:
robots.txt 爬蟲規則本文展示了基於 HttpURLConnection 的輕量級網址收集器實現。雖然核心邏輯簡單,但編碼處理、反爬蟲應對、數據清洗等工程細節決定了系統的可用性。現代開發中,更推薦使用 HttpClient、Jsoup、Selenium 等成熟框架提升開發效率與穩定性。