Bir API yeterli gelmediğinde, her zaman HTML'yi ayıklamaya başvurabilirsiniz ve Rust size yardımcı olabilir.

Web kazıma, web sayfalarından büyük miktarda veriyi hızlı ve verimli bir şekilde toplamak için popüler bir tekniktir. Bir API'nin yokluğunda, web kazıma bir sonraki en iyi yaklaşım olabilir.

Rust'ın hızı ve bellek güvenliği, dili web kazıyıcılar oluşturmak için ideal kılar. Rust, birçok güçlü ayrıştırma ve veri çıkarma kitaplığına ev sahipliği yapar ve sağlam hata işleme yetenekleri, verimli ve güvenilir web verisi toplama için kullanışlıdır.

Rust'ta Web Scraping

Birçok popüler kitaplık, Rust'ta web kazımayı destekler. istek batı, kazıyıcı, seçme, Ve html5ever. Çoğu Rust geliştiricisi, web kazıma işlemleri için reqwest ve scraper'ın işlevselliğini birleştirir.

reqwest kitaplığı, web sunucularına HTTP istekleri yapmak için işlevsellik sağlar. Reqwest, Rust'ın yerleşik aşırı standart HTTP özellikleri için üst düzey bir API sunarken kasa.

Kazıyıcı, HTML ve XML belgelerini ayrıştıran ve CSS seçicileri kullanarak verileri çıkarır ve XPath ifadeleri.

instagram viewer

ile yeni bir Rust projesi oluşturduktan sonra kargo yeni komutu, ekleyin istek batı Ve kazıyıcı bağımlılıklar bölümüne kasalar kargo.toml dosya:

[bağımlılıklar]
istek batı = {versiyon = "0.11", özellikler = ["engelleme"]}
kazıyıcı = "0.12.0"

kullanacaksın istek batı ile HTTP istekleri gönder Ve kazıyıcı ayrıştırma için.

Reqwest ile Web Sayfalarını Alma

Belirli verileri almak için ayrıştırmadan önce bir web sayfasının içeriği için bir istek gönderirsiniz.

kullanarak bir GET isteği gönderebilir ve bir sayfanın HTML kaynağını alabilirsiniz. metin üzerinde işlev elde etmek işlevi istek batı kütüphane:

fnalmak_html() -> Sicim {
izin vermek cevap = al(" https://news.ycombinator.com").unwrap().text().unwrap();
geri dönmek cevap;
}

bu elde etmek işlevi, isteği web sayfasına gönderir ve metin işlev, HTML metnini döndürür.

Kazıyıcı ile HTML'yi Ayrıştırma

bu almak_html işlevi, HTML metnini döndürür ve ihtiyacınız olan belirli verileri almak için HTML metnini ayrıştırmanız gerekir.

Kazıyıcı, HTML ile etkileşim için işlevsellik sağlar. html Ve seçici modüller. bu html modülü, belgeyi ayrıştırmak için işlevsellik sağlar ve seçici modülü, HTML'den belirli öğeleri seçmek için işlevsellik sağlar.

Bir sayfadaki tüm başlıkları şu şekilde alabilirsiniz:

kullanmak kazıyıcı::{Html, Seçici};

fnana() {
izin vermek yanıt = talep:: engelleme:: al(
" https://news.ycombinator.com/").unwrap().text().unwrap();

// HTML belgesini ayrıştır
izin vermek doc_body = Html:: parse_document(&response);

// başlık sınıfına sahip öğeleri seçin
izin vermek başlık = Seçici:: ayrıştır(".başlık").aç();

için başlık içinde doc_body.select(&başlık) {
izin vermek başlıklar = title.text().collect::<Vec<_>>();
yazdır!("{}", başlıklar[0])
}
}

bu ayrıştırma_belgesi işlevi html modülü HTML metnini ayrıştırır ve Ayrıştır işlevi seçici modülü, öğeleri belirtilen CSS seçiciyle seçer (bu durumda, başlık satırı sınıf).

bu için döngü bu öğeler arasında dolaşır ve her birinden ilk metin bloğunu yazdırır.

İşte operasyonun sonucu:

Kazıyıcı ile Özniteliklerin Seçilmesi

Bir öznitelik değeri seçmek için gerekli öğeleri daha önce olduğu gibi alın ve özellik etiket değeri örneğinin yöntemi:

kullanmak reqwest:: engelleme:: al;
kullanmak kazıyıcı::{Html, Seçici};

fnana() {
izin vermek cevap = al(" https://news.ycombinator.com").unwrap().text().unwrap();
izin vermek html_doc = Html:: parse_document(&response);
izin vermek class_selector = Seçici:: ayrıştır(".başlık").aç();

için eleman içinde html_doc.select(&class_selector) {
izin vermek link_selector = Seçici:: ayrıştır("A").aç();

için bağlantı içinde element.select(&link_selector) {
eğerizin vermekBazı(href) = link.value().attr("href") {
yazdır!("{}", href);
}
}
}
}

ile öğeleri seçtikten sonra başlık satırı kullanarak sınıf ayrıştırmak işlev, için döngü onları geçer. Döngü içinde, kod daha sonra getirilir A etiketler ve seçer href öznitelik ile özellik işlev.

bu ana işlevi bu bağlantıları şunun gibi bir sonuçla yazdırır:

Rust'ta Sofistike Web Uygulamaları Oluşturabilirsiniz

Son zamanlarda Rust, ön uçtan sunucu tarafı uygulama geliştirmeye kadar web geliştirme için bir dil olarak benimseniyor.

Yew ve Percy gibi kitaplıklarla tam yığın web uygulamaları oluşturmak veya sunucu tarafı oluşturmak için web derlemesinden yararlanabilirsiniz. Actix, Rocket ve Rust ekosistemindeki web oluşturmak için işlevsellik sağlayan bir dizi kitaplık içeren uygulamalar uygulamalar.