Rumah >Java >javaTutorial >Tutorial aplikasi perangkak Java, penangkapan dan analisis data praktikal

Tutorial aplikasi perangkak Java, penangkapan dan analisis data praktikal

WBOY
WBOYasal
2023-06-15 23:22:471592semak imbas

Tutorial aplikasi perangkak Java, penangkapan dan analisis data praktikal

Dengan kemunculan era Internet, data telah menjadi satu-satunya cara untuk syarikat dan individu berjaya, jadi kepentingan data telah menjadi lebih dan lebih yang penting. Sebagai alat yang berkuasa untuk pemerolehan data, teknologi perangkak telah digunakan secara meluas dalam semua bidang kehidupan. Artikel ini akan memperkenalkan cara menggunakan bahasa Java untuk menulis perangkak bagi menangkap dan menganalisis data.

1. Pengetahuan prasyarat

Sebelum mempelajari Java crawler, anda perlu menguasai pengetahuan asas berikut:

  1. Asas bahasa Java: sekurang-kurangnya anda perlu memahami Java Konsep asas seperti kelas, kaedah, pembolehubah, dan idea pengaturcaraan berorientasikan objek.
  2. Asas HTML: Fahami struktur asas dan teg bahasa HTML, serta boleh menggunakan gaya CSS dan kod JavaScript yang ringkas.
  3. Asas HTTP: Fahami prinsip asas kaedah GET dan POST dalam protokol HTTP, dan mempunyai pemahaman tertentu tentang maklumat pengepala HTTP seperti Kuki, Ejen Pengguna dan sebagainya.
  4. Ungkapan Biasa: Fahami sintaks asas dan penggunaan ungkapan biasa.
  5. Operasi pangkalan data: Kuasai pengetahuan asas operasi pangkalan data Java, seperti JDBC, Hibernate, MyBatis, dll.

2. Asas perangkak Java

Perangkak web ialah program automatik yang boleh mensimulasikan tingkah laku manusia untuk mengakses Internet, mengekstrak maklumat daripada halaman web dan memprosesnya. Bahasa Java mempunyai keupayaan pengaturcaraan rangkaian yang baik dan ciri berorientasikan objek yang berkuasa, jadi ia sangat sesuai untuk menulis program perangkak.

Perangkak Java biasanya dibahagikan kepada tiga bahagian: pengurus URL, pemuat turun halaman web dan penghurai halaman web.

  1. Pengurus URL

Pengurus URL menguruskan alamat URL yang perlu dirangkak oleh perangkak dan merekodkan URL yang telah dirangkak dan URL yang masih perlu dirangkak . Secara umumnya terdapat dua cara untuk melaksanakan pengurus URL:

(1) Pengurus URL dalam ingatan: Gunakan Set atau Baris Gilir untuk merekodkan URL yang telah dirangkak dan URL yang akan dirangkak.

(2) Pengurus URL pangkalan data: Simpan URL yang dirangkak dan yang akan dirangkak dalam pangkalan data.

  1. Pemuat Turun Halaman Web

Pemuat Turun Halaman Web ialah bahagian teras perangkak dan bertanggungjawab untuk memuat turun halaman web daripada Internet. Perangkak Java umumnya mempunyai dua kaedah pelaksanaan:

(1) URLConnection: dilaksanakan menggunakan kelas URLConnection, yang agak mudah digunakan Kod teras adalah seperti berikut:

URL url = new URL("http://www.example.com");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
InputStream in = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line = reader.readLine();
while (line != null) {
    System.out.println(line);
    line = reader.readLine();
}

(2) HttpClient. : dilaksanakan menggunakan rangka kerja HttpClient , lebih berkuasa daripada URLConnection, dan boleh mengendalikan maklumat pengepala HTTP seperti Kuki dan Ejen Pengguna tersuai Kod teras adalah seperti berikut:

HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod("http://www.example.com");
int status = httpClient.executeMethod(getMethod);
if (status == HttpStatus.SC_OK) {
    InputStream in = getMethod.getResponseBodyAsStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
    String line = reader.readLine();
    while (line != null) {
        System.out.println(line);
        line = reader.readLine();
    }
}
  1. Penghurai halaman web
  2. .

Muat turun halaman web Selepas memuat turun, anda perlu menggunakan penghurai halaman web untuk mengekstrak data. Perangkak Java biasanya mempunyai dua kaedah pelaksanaan:

(1) Ungkapan biasa: Gunakan ungkapan biasa untuk memadankan data dalam halaman web Kod teras adalah seperti berikut:

String pattern = "<title>(.*?)</title>";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(html);
if (m.find()) {
    System.out.println(m.group(1));
}

(2) Penghurai HTML: Dilaksanakan menggunakan rangka kerja Jsoup, halaman web boleh ditukar menjadi struktur DOM, dan kemudian data boleh diperolehi melalui pemilih CSS atau kaedah yang serupa dengan XPath Kod teras adalah seperti berikut:

Document doc = Jsoup.connect("http://www.example.com").get();
Elements links = doc.select("a[href]");
for (Element link : links) {
    String text = link.text();
    String href = link.attr("href");
    System.out.println(text + " " + href);
}

3 . Amalan perangkak Java

Fahami Selepas memahami idea asas dan kaedah pelaksanaan perangkak Java, kita boleh cuba menulis program perangkak mudah untuk mendapatkan data daripada tapak web dan menganalisisnya.

  1. Data merangkak

Kami memilih untuk merangkak data kedudukan filem Douban. Mula-mula, kita perlu mendapatkan alamat URL kedudukan filem Douban, seperti yang ditunjukkan di bawah:

https://movie.douban.com/chart

Kemudian, kita boleh menggunakan rangka kerja Jsoup untuk memuat turun halaman web dan mengekstrak data di dalamnya, kodnya adalah seperti berikut:

Document doc = Jsoup.connect("https://movie.douban.com/chart").get();
Elements items = doc.select("div.item");
List<Movie> movieList = new ArrayList<>();
for (Element item : items) {
    Elements title = item.select("div.info div.hd a");
    Elements rating = item.select("div.info div.bd div.star span.rating_num");
    Elements director = item.select("div.info div.bd p").eq(0);
    Elements actor = item.select("div.info div.bd p").eq(1);
    Movie movie = new Movie();
    movie.setTitle(title.text());
    movie.setRating(Double.valueOf(rating.text()));
    movie.setDirector(director.text().replace("导演: ", ""));
    movie.setActor(actor.text().replace("主演: ", ""));
    movieList.add(movie);
}

Di sini kami menggunakan kelas Filem untuk menyimpan maklumat filem.

  1. Menyimpan data

Simpan data filem yang diperoleh ke dalam pangkalan data untuk memudahkan analisis seterusnya. Di sini kita menggunakan JDBC untuk mengendalikan pangkalan data bilangan filem dan purata penarafan setiap Pengarah. Kodnya adalah seperti berikut:

public class DBHelper {
    private static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    private static final String DB_URL = "jdbc:mysql://localhost:3306/db";
    private static final String USER = "root";
    private static final String PASS = "password";

    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(JDBC_DRIVER);
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }

    public static void saveMovies(List<Movie> movieList) {
        try (Connection conn = getConnection();
             PreparedStatement stmt = conn.prepareStatement(
                     "INSERT INTO movie(title,rating,director,actor) VALUES (?,?,?,?)"
             )) {
            for (Movie movie : movieList) {
                stmt.setString(1, movie.getTitle());
                stmt.setDouble(2, movie.getRating());
                stmt.setString(3, movie.getDirector());
                stmt.setString(4, movie.getActor());
                stmt.addBatch();
            }
            stmt.executeBatch();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
    Simpan maklumat filem yang diperolehi dalam pangkalan data dan analisanya Kami telah melengkapkan aplikasi praktikal perangkak Java.
  1. 4. Ringkasan

Artikel ini memperkenalkan pengetahuan asas dan aplikasi praktikal perangkak Java, dengan harapan dapat membantu pembaca memahami teknologi perangkak dan pengaturcaraan Java dengan lebih baik. Dalam amalan, anda perlu memberi perhatian kepada norma undang-undang dan etika dan mengelak daripada mendapatkan privasi orang lain secara haram dan melanggar hak cipta. Pada masa yang sama, anda juga perlu menguasai teknologi anti-crawler untuk mengelak daripada disekat atau IP diharamkan oleh tapak web yang dirangkak.

Atas ialah kandungan terperinci Tutorial aplikasi perangkak Java, penangkapan dan analisis data praktikal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn