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

Amalan perangkak Java yang cekap: perkongsian teknik rangkak data web

WBOY
Lepaskan: 2024-01-09 12:29:53
asal
1329 orang telah melayarinya

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!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan