Rumah Java javaTutorial Amalan perangkak Java yang cekap: perkongsian teknik rangkak data web

Amalan perangkak Java yang cekap: perkongsian teknik rangkak data web

Jan 09, 2024 pm 12:29 PM
java reptilia Pengikisan data

Amalan perangkak Java yang cekap: perkongsian teknik rangkak data web

Amalan perangkak Java: Cara merangkak data halaman web dengan cekap

Pengenalan:

Dengan perkembangan pesat Internet, sejumlah besar data berharga disimpan dalam pelbagai halaman web. Untuk mendapatkan data ini, selalunya perlu untuk mengakses setiap halaman web secara manual dan mengekstrak maklumat satu demi satu, yang sudah pasti tugas yang membosankan dan memakan masa. Untuk menyelesaikan masalah ini, orang ramai telah membangunkan pelbagai alat crawler, antaranya Java crawler adalah salah satu yang paling biasa digunakan. Artikel ini akan membawa pembaca memahami cara menggunakan Java untuk menulis perangkak web yang cekap dan menunjukkan amalan melalui contoh kod tertentu.

1. Prinsip asas perangkak

Prinsip asas perangkak web ialah menghantar permintaan HTTP dengan mensimulasikan penyemak imbas, dan kemudian menghuraikan halaman web dan mengekstrak data yang diperlukan. Proses kerja dibahagikan secara kasar kepada langkah berikut:

  1. Hantar permintaan HTTP: Gunakan perpustakaan pengaturcaraan rangkaian Java, seperti HttpURLConnection, HttpClient, dsb., untuk membina permintaan HTTP dan menghantarnya ke halaman web sasaran.
  2. Penghuraian halaman web: Mengikut struktur halaman web, gunakan pustaka penghuraian yang sesuai, seperti Jsoup, XPath, dll., untuk menghuraikan halaman web dalam format HTML, XML atau JSON dan mengekstrak data yang diperlukan.
  3. Pemprosesan dan penyimpanan data: Proses data yang diekstrak, seperti pembersihan, penapisan, dsb., dan kemudian simpannya dalam pangkalan data, fail atau memori untuk kegunaan seterusnya.

2. Penciptaan persekitaran pembangunan perangkak

Untuk mula membangunkan perangkak Java, anda perlu membina persekitaran yang sepadan. Pertama, pastikan Java Development Kit (JDK) dan Java Integrated Development Environment (IDE), seperti Eclipse, IntelliJ IDEA, dsb., dipasang. Kemudian, perkenalkan perpustakaan pengaturcaraan rangkaian yang diperlukan ke dalam projek, seperti HttpClient, Jsoup, dsb.

3. Latihan Praktikal: Dapatkan Data Kedudukan Filem Douban

Untuk mempraktikkan proses pembangunan crawler, kami memilih untuk merebut data Kedudukan Filem Douban sebagai contoh. Matlamat kami adalah untuk mengekstrak nama filem, penilaian dan bilangan pengulas.

  1. Hantar permintaan HTTP

Pertama, kita perlu menggunakan perpustakaan pengaturcaraan rangkaian Java untuk menghantar permintaan HTTP untuk mendapatkan kandungan halaman web. Berikut ialah contoh kod untuk menghantar permintaan GET menggunakan perpustakaan HttpClient:

import org.apache.http.HttpEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class HttpClientExample {
    public static void main(String[] args) {
        CloseableHttpClient httpClient = HttpClients.createDefault();
        HttpGet httpGet = new HttpGet("https://movie.douban.com/top250");
        
        try (CloseableHttpResponse response = httpClient.execute(httpGet)){
            HttpEntity entity = response.getEntity();
            String result = EntityUtils.toString(entity);
            System.out.println(result);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Salin selepas log masuk
  1. Penghuraian halaman web

Dengan menghantar permintaan HTTP, kami memperoleh kandungan web penarafan filem Douban. Seterusnya, kita perlu menggunakan perpustakaan parsing untuk mengekstrak data yang diperlukan. Berikut ialah contoh kod untuk menggunakan perpustakaan Jsoup untuk menghuraikan halaman HTML:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class JsoupExample {
    public static void main(String[] args) {
        try {
            Document document = Jsoup.connect("https://movie.douban.com/top250").get();
            Elements elements = document.select("ol.grid_view li");
            
            for (Element element : elements) {
                String title = element.select(".title").text();
                String rating = element.select(".rating_num").text();
                String votes = element.select(".star span:nth-child(4)").text();
                
                System.out.println("电影名称:" + title);
                System.out.println("评分:" + rating);
                System.out.println("评价人数:" + votes);
                System.out.println("-------------------------");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
Salin selepas log masuk
  1. Pemprosesan dan penyimpanan data

Dalam aplikasi sebenar, kami mungkin perlu memproses dan menyimpan data yang diekstrak selanjutnya. Sebagai contoh, kita boleh menyimpan data dalam pangkalan data untuk kegunaan seterusnya. Berikut ialah contoh kod yang menggunakan pangkalan data MySQL untuk menyimpan data:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class DataProcessingExample {
    public static void main(String[] args) {
        String jdbcUrl = "jdbc:mysql://localhost:3306/spider";
        String username = "root";
        String password = "password";
        
        try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password)) {
            String sql = "INSERT INTO movie (title, rating, votes) VALUES (?, ?, ?)";
            PreparedStatement statement = conn.prepareStatement(sql);
            
            // 假设从网页中获取到了以下数据
            String title = "肖申克的救赎";
            String rating = "9.7";
            String votes = "2404447";
            
            statement.setString(1, title);
            statement.setString(2, rating);
            statement.setString(3, votes);
            
            int rowsAffected = statement.executeUpdate();
            System.out.println("插入了 " + rowsAffected + " 条数据");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
Salin selepas log masuk

IV Ringkasan

Artikel ini memperkenalkan prinsip asas perangkak Java dan menunjukkan cara menggunakan Java untuk menulis perangkak web yang cekap melalui contoh kod tertentu. Dengan mempelajari pengetahuan asas ini, pembaca boleh membangunkan program perangkak yang lebih kompleks dan fleksibel mengikut keperluan sebenar. Dalam aplikasi praktikal, anda juga perlu memberi perhatian kepada penggunaan perangkak yang sah dan menghormati dasar privasi dan syarat perkhidmatan tapak web untuk mengelakkan pertikaian undang-undang. Saya berharap artikel ini akan menjadi panduan kepada pembaca dalam pembelajaran dan aplikasi crawler Java.

Atas ialah kandungan terperinci Amalan perangkak Java yang cekap: perkongsian teknik rangkak data web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Nombor Sempurna di Jawa Nombor Sempurna di Jawa Aug 30, 2024 pm 04:28 PM

Panduan Nombor Sempurna di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor Perfect dalam Java?, contoh dengan pelaksanaan kod.

Penjana Nombor Rawak di Jawa Penjana Nombor Rawak di Jawa Aug 30, 2024 pm 04:27 PM

Panduan untuk Penjana Nombor Rawak di Jawa. Di sini kita membincangkan Fungsi dalam Java dengan contoh dan dua Penjana berbeza dengan contoh lain.

Weka di Jawa Weka di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Weka di Jawa. Di sini kita membincangkan Pengenalan, cara menggunakan weka java, jenis platform, dan kelebihan dengan contoh.

Nombor Smith di Jawa Nombor Smith di Jawa Aug 30, 2024 pm 04:28 PM

Panduan untuk Nombor Smith di Jawa. Di sini kita membincangkan Definisi, Bagaimana untuk menyemak nombor smith di Jawa? contoh dengan pelaksanaan kod.

Soalan Temuduga Java Spring Soalan Temuduga Java Spring Aug 30, 2024 pm 04:29 PM

Dalam artikel ini, kami telah menyimpan Soalan Temuduga Spring Java yang paling banyak ditanya dengan jawapan terperinci mereka. Supaya anda boleh memecahkan temuduga.

Cuti atau kembali dari Java 8 Stream Foreach? Cuti atau kembali dari Java 8 Stream Foreach? Feb 07, 2025 pm 12:09 PM

Java 8 memperkenalkan API Stream, menyediakan cara yang kuat dan ekspresif untuk memproses koleksi data. Walau bagaimanapun, soalan biasa apabila menggunakan aliran adalah: bagaimana untuk memecahkan atau kembali dari operasi foreach? Gelung tradisional membolehkan gangguan awal atau pulangan, tetapi kaedah Foreach Stream tidak menyokong secara langsung kaedah ini. Artikel ini akan menerangkan sebab -sebab dan meneroka kaedah alternatif untuk melaksanakan penamatan pramatang dalam sistem pemprosesan aliran. Bacaan Lanjut: Penambahbaikan API Java Stream Memahami aliran aliran Kaedah Foreach adalah operasi terminal yang melakukan satu operasi pada setiap elemen dalam aliran. Niat reka bentuknya adalah

TimeStamp to Date in Java TimeStamp to Date in Java Aug 30, 2024 pm 04:28 PM

Panduan untuk TimeStamp to Date di Java. Di sini kita juga membincangkan pengenalan dan cara menukar cap waktu kepada tarikh dalam java bersama-sama dengan contoh.

Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Cipta Masa Depan: Pengaturcaraan Java untuk Pemula Mutlak Oct 13, 2024 pm 01:32 PM

Java ialah bahasa pengaturcaraan popular yang boleh dipelajari oleh pembangun pemula dan berpengalaman. Tutorial ini bermula dengan konsep asas dan diteruskan melalui topik lanjutan. Selepas memasang Kit Pembangunan Java, anda boleh berlatih pengaturcaraan dengan mencipta program "Hello, World!" Selepas anda memahami kod, gunakan gesaan arahan untuk menyusun dan menjalankan program, dan "Hello, World!" Pembelajaran Java memulakan perjalanan pengaturcaraan anda, dan apabila penguasaan anda semakin mendalam, anda boleh mencipta aplikasi yang lebih kompleks.

See all articles