App下載

Java爬蟲入門:如何用Java抓取網(wǎng)頁數(shù)據(jù)

一級燒烤品鑒師 2023-07-09 09:30:00 瀏覽數(shù) (2708)
反饋

爬蟲是什么?

爬蟲,也叫網(wǎng)絡爬蟲或網(wǎng)頁抓取,是一種自動從互聯(lián)網(wǎng)上獲取信息的程序或者腳本。爬蟲可以根據(jù)一定的規(guī)則,模擬瀏覽器的行為,訪問指定的網(wǎng)站,抓取網(wǎng)頁上的數(shù)據(jù),并進行存儲或分析。

Java可以寫爬蟲嗎?

Java是一種廣泛使用的編程語言,具有跨平臺、面向對象、高性能等特點。Java也可以用來編寫爬蟲程序,因為Java提供了很多網(wǎng)絡編程和數(shù)據(jù)處理的類庫,例如HttpURLConnection, Jsoup, HttpClient等。使用這些類庫,可以方便地發(fā)送HTTP請求,解析HTML文檔,提取所需的數(shù)據(jù)。

Java爬蟲案例

下面給出一個簡單的Java爬蟲案例,用來抓取百度搜索結果的標題和鏈接。首先,我們需要導入以下幾個類庫:

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

然后,我們定義一個方法,用來發(fā)送HTTP請求,并返回響應的HTML文檔:

public static Document getHtml(String url) throws IOException {
    // 創(chuàng)建一個URL對象
    URL u = new URL(url);
    // 打開一個HTTP連接
    HttpURLConnection conn = (HttpURLConnection) u.openConnection();
    // 設置請求方法為GET
    conn.setRequestMethod("GET");
    // 設置連接超時和讀取超時時間
    conn.setConnectTimeout(5000);
    conn.setReadTimeout(5000);
    // 判斷響應碼是否為200
    if (conn.getResponseCode() == 200) {
        // 使用Jsoup解析HTML文檔
        Document doc = Jsoup.parse(conn.getInputStream(), "utf-8", url);
        // 關閉連接
        conn.disconnect();
        // 返回文檔對象
        return doc;
    } else {
        // 拋出異常
        throw new IOException("請求失敗,響應碼為" + conn.getResponseCode());
    }
}

接下來,我們定義一個方法,用來從HTML文檔中提取搜索結果的標題和鏈接:

public static void parseHtml(Document doc) {
    // 選擇所有包含搜索結果的div元素
    Elements results = doc.select("div.result");
    // 遍歷每個div元素
    for (Element result : results) {
        // 選擇標題中的a元素
        Element title = result.selectFirst("h3 a");
        // 獲取標題文本和鏈接地址
        String text = title.text();
        String link = title.attr("href");
        // 打印標題和鏈接
        System.out.println(text);
        System.out.println(link);
    }
}

最后,我們定義一個主方法,用來調用上面的兩個方法,并傳入一個搜索關鍵詞:

public static void main(String[] args) throws IOException {
    // 定義一個搜索關鍵詞
    String keyword = "java";
    // 拼接百度搜索的URL地址
    String url = "https://www.baidu.com/s?wd=" + keyword;
    // 調用getHtml方法,獲取HTML文檔對象
    Document doc = getHtml(url);
    // 調用parseHtml方法,解析HTML文檔,并打印搜索結果
    parseHtml(doc);
}

小結

很多人一聽到爬蟲第一反應就是python,beautifulsoup等,固執(zhí)地認為爬蟲就應該學python。但實際上爬蟲可以用其他語言實現(xiàn),比如本文提到的java,甚至可以使用C/C++去實現(xiàn)。一些技術并不是只有某些語言能特定實現(xiàn),只不過python實現(xiàn)更易于被人接受而已。希望本文能給你帶來一個全新的視角,不再局限于使用python編寫爬蟲!

0 人點贊