Saat API tidak dapat memotongnya, Anda selalu dapat menggunakan pengikisan HTML, dan Rust dapat membantu Anda.

Pengikisan web adalah teknik populer untuk mengumpulkan data dalam jumlah besar dari halaman web dengan cepat dan efisien. Dengan tidak adanya API, pengikisan web bisa menjadi pendekatan terbaik berikutnya.

Kecepatan dan keamanan memori Rust menjadikan bahasa ini ideal untuk membuat pencakar web. Rust adalah rumah bagi banyak pustaka parsing dan ekstraksi data yang kuat, dan kemampuan penanganan kesalahannya yang kuat berguna untuk pengumpulan data web yang efisien dan andal.

Pengikisan Web dalam Karat

Banyak perpustakaan populer mendukung pengikisan web di Rust, termasuk reqwest, pengikis, Pilih, Dan html5ever. Sebagian besar pengembang Rust menggabungkan fungsionalitas dari reqwest dan scraper untuk pengikisan web mereka.

Pustaka reqwest menyediakan fungsionalitas untuk membuat permintaan HTTP ke server web. Reqwest dibangun di atas bawaan Rust hiper peti sambil mengirimkan API tingkat tinggi untuk fitur HTTP standar.

instagram viewer

Scraper adalah perpustakaan scraping web yang kuat yang mem-parsing dokumen HTML dan XML dan mengekstrak data menggunakan pemilih CSS dan ekspresi XPath.

Setelah membuat proyek Rust baru dengan kargo baru perintah, tambahkan reqwest Dan pengikis peti ke bagian dependensi Anda cargo.toml mengajukan:

[ketergantungan]
reqwest = {versi = "0.11", fitur = ["pemblokiran"]}
pengikis = "0.12.0"

Anda akan menggunakan reqwest ke mengirim permintaan HTTP Dan pengikis untuk penguraian.

Mengambil Halaman Web Dengan Reqwest

Anda akan mengirimkan permintaan konten halaman web sebelum menguraikannya untuk mengambil data tertentu.

Anda dapat mengirim permintaan GET dan mengambil sumber HTML halaman menggunakan teks fungsi pada mendapatkan fungsi dari reqwest perpustakaan:

fnambil_html() -> Rangkaian {
membiarkan respon = dapatkan(" https://news.ycombinator.com").unwrap().text().unwrap();
kembali tanggapan;
}

Itu mendapatkan fungsi mengirimkan permintaan ke halaman web, dan teks fungsi mengembalikan teks HTML.

Parsing HTML Dengan Scraper

Itu ambil_html fungsi mengembalikan teks HTML, dan Anda harus mengurai teks HTML untuk mengambil data spesifik yang Anda butuhkan.

Scraper menyediakan fungsionalitas untuk berinteraksi dengan HTML di Html Dan Pemilih modul. Itu Html modul menyediakan fungsionalitas untuk parsing dokumen, dan Pemilih modul menyediakan fungsionalitas untuk memilih elemen tertentu dari HTML.

Inilah cara Anda dapat mengambil semua judul di halaman:

menggunakan pengikis::{Html, Pemilih};

fnutama() {
membiarkan respon = reqwest:: memblokir:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();

// parsing dokumen HTML
membiarkan doc_body = Html:: parse_document(&response);

// pilih elemen dengan kelas garis judul
membiarkan judul = Pemilih:: parse(".judul").membuka();

untuk judul di dalam doc_body.select(&judul) {
membiarkan judul = judul.teks().mengumpulkan::<Vec<_>>();
cetak!("{}", judul[0])
}
}

Itu parse_document fungsi dari Html modul mem-parsing teks HTML, dan Mengurai fungsi dari Pemilih modul memilih elemen dengan pemilih CSS yang ditentukan (dalam hal ini, file baris judul kelas).

Itu untuk loop melintasi elemen-elemen ini dan mencetak blok teks pertama dari masing-masing elemen.

Inilah hasil operasinya:

Memilih Atribut Dengan Scraper

Untuk memilih nilai atribut, ambil elemen yang diperlukan seperti sebelumnya dan gunakan attr metode instance nilai tag:

menggunakan reqwest:: pemblokiran:: dapatkan;
menggunakan pengikis::{Html, Pemilih};

fnutama() {
membiarkan respon = dapatkan(" https://news.ycombinator.com").unwrap().text().unwrap();
membiarkan html_doc = Html:: parse_document(&response);
membiarkan class_selector = Pemilih:: parse(".judul").membuka();

untuk elemen di dalam html_doc.select(&class_selector) {
membiarkan link_selector = Pemilih:: parse("A").membuka();

untuk tautan di dalam element.select(&link_selector) {
jikamembiarkanBeberapa(href) = tautan.nilai().attr("href") {
cetak!("{}", href);
}
}
}
}

Setelah memilih elemen dengan baris judul kelas menggunakan mengurai fungsi, yang untuk lingkaran melintasi mereka. Di dalam loop, kode kemudian diambil A tag dan memilih href atribut dengan attr fungsi.

Itu utama function mencetak tautan ini, dengan hasil seperti ini:

Anda Dapat Membuat Aplikasi Web Canggih di Rust

Baru-baru ini, Rust telah diadopsi sebagai bahasa untuk pengembangan web dari pengembangan aplikasi front-end ke sisi server.

Anda dapat memanfaatkan perakitan web untuk membangun aplikasi web tumpukan penuh dengan perpustakaan seperti Yew dan Percy atau membangun sisi server aplikasi dengan Actix, Rocket, dan host perpustakaan di ekosistem Rust yang menyediakan fungsionalitas untuk membangun web aplikasi.