Wenn eine API einfach nicht ausreicht, können Sie jederzeit auf HTML-Scraping zurückgreifen, und Rust kann Ihnen dabei helfen.

Web Scraping ist eine beliebte Technik zum schnellen und effizienten Sammeln großer Datenmengen von Webseiten. Wenn keine API vorhanden ist, kann Web Scraping der nächstbeste Ansatz sein.

Die Geschwindigkeit und Speichersicherheit von Rust machen die Sprache ideal für die Erstellung von Web-Scrapern. Rust beherbergt viele leistungsstarke Parsing- und Datenextraktionsbibliotheken und seine robusten Fehlerbehandlungsfunktionen sind praktisch für eine effiziente und zuverlässige Webdatenerfassung.

Web Scraping in Rust

Viele beliebte Bibliotheken unterstützen Web Scraping in Rust, darunter Bitte, Schaber, wählen, Und html5ever. Die meisten Rust-Entwickler kombinieren für ihr Web-Scraping Funktionen von reqwest und scraper.

Die reqwest-Bibliothek bietet Funktionen zum Senden von HTTP-Anfragen an Webserver. Reqwest basiert auf der integrierten Version von Rust hyper crate und stellt gleichzeitig eine High-Level-API für Standard-HTTP-Funktionen bereit.

instagram viewer

Scraper ist eine leistungsstarke Web-Scraping-Bibliothek, die HTML- und XML-Dokumente analysiert und extrahiert Daten mithilfe von CSS-Selektoren und XPath-Ausdrücke.

Nach dem Erstellen eines neuen Rust-Projekts mit dem Ladung neu Befehl, fügen Sie die hinzu Bitte Und Schaber Kisten in den Abschnitt „Abhängigkeiten“ Ihres fracht.toml Datei:

[Abhängigkeiten]
Bitte = {Version = "0.11", Funktionen = ["Blockierung"]}
Schaber = "0.12.0"

Du wirst es verwenden Bitte Zu HTTP-Anfragen senden Und Schaber zum Parsen.

Abrufen von Webseiten mit Reqwest

Sie senden eine Anfrage für den Inhalt einer Webseite, bevor Sie diese analysieren, um bestimmte Daten abzurufen.

Sie können eine GET-Anfrage senden und die HTML-Quelle einer Seite mithilfe von abrufen Text Funktion auf der erhalten Funktion der Bitte Bibliothek:

fnAbrufen_html() -> Zeichenfolge {
lassen Antwort = get(" https://news.ycombinator.com").unwrap().text().unwrap();
zurückkehren Antwort;
}

Der erhalten Die Funktion sendet die Anfrage an die Webseite und die Text Die Funktion gibt den Text des HTML zurück.

HTML mit Scraper analysieren

Der Abrufen_html Die Funktion gibt den HTML-Text zurück, und Sie müssen den HTML-Text analysieren, um die spezifischen Daten abzurufen, die Sie benötigen.

Scraper bietet Funktionen für die Interaktion mit HTML im HTML Und Wähler Module. Der HTML Das Modul bietet Funktionen zum Parsen des Dokuments Wähler Das Modul bietet Funktionen zum Auswählen bestimmter Elemente aus dem HTML.

So können Sie alle Titel einer Seite abrufen:

verwenden scraper::{Html, Selector};

fnhauptsächlich() {
lassen Antwort = reqwest:: blocking:: get(
" https://news.ycombinator.com/").unwrap().text().unwrap();

// das HTML-Dokument analysieren
lassen doc_body = Html:: parse_document(&response);

// Elemente mit Titelzeilenklasse auswählen
lassen title = Selector:: parse(„.titleline“).auspacken();

für Titel In doc_body.select(&title) {
lassen titles = title.text().collect::<Vec<_>>();
println!("{}", Titel[0])
}
}

Der parse_document Funktion der HTML Das Modul analysiert den HTML-Text und die Analysieren Funktion der Wähler Das Modul wählt die Elemente mit dem angegebenen CSS-Selektor aus (in diesem Fall die Titelzeile Klasse).

Der für Die Schleife durchläuft diese Elemente und gibt jeweils den ersten Textblock aus.

Hier ist das Ergebnis der Operation:

Auswählen von Attributen mit Scraper

Um einen Attributwert auszuwählen, rufen Sie die erforderlichen Elemente wie zuvor ab und verwenden Sie die attr Methode der Tag-Wert-Instanz:

verwenden reqwest:: blocking:: get;
verwenden scraper::{Html, Selector};

fnhauptsächlich() {
lassen Antwort = get(" https://news.ycombinator.com").unwrap().text().unwrap();
lassen html_doc = Html:: parse_document(&response);
lassen class_selector = Selector:: parse(„.titleline“).auspacken();

für Element In html_doc.select(&class_selector) {
lassen link_selector = Selektor:: parse("A").auspacken();

für Verknüpfung In element.select(&link_selector) {
WennlassenManche(href) = link.value().attr(„href“) {
println!("{}", href);
}
}
}
}

Nach der Auswahl von Elementen mit dem Titelzeile Klasse mit der analysieren Funktion, die für Die Schleife durchquert sie. Innerhalb der Schleife wird dann der Code abgerufen A Tags und wählt die aus href Attribut mit dem attr Funktion.

Der hauptsächlich Funktion gibt diese Links aus, mit einem Ergebnis wie diesem:

Sie können in Rust anspruchsvolle Webanwendungen erstellen

In letzter Zeit hat sich Rust als Sprache für die Webentwicklung vom Frontend bis zur serverseitigen App-Entwicklung durchgesetzt.

Sie können Webassembly nutzen, um Full-Stack-Webanwendungen mit Bibliotheken wie Yew und Percy zu erstellen oder serverseitig zu erstellen Anwendungen mit Actix, Rocket und den zahlreichen Bibliotheken im Rust-Ökosystem, die Funktionen zum Erstellen von Webfunktionen bereitstellen Anwendungen.