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:
- Hantar permintaan HTTP: Gunakan perpustakaan pengaturcaraan rangkaian Java, seperti HttpURLConnection, HttpClient, dsb., untuk membina permintaan HTTP dan menghantarnya ke halaman web sasaran.
- 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.
- 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.
- 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(); } } }
- 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(); } } }
- 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(); } } }
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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



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

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

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

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

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

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

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.

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.
