Python Tutorials für crawling HTML-Seiten mit Lxml und Anfragen-Module

Quelle: Internet
Autor: Benutzer

Tags: Parse testen 4.4 Schönheit aus ROM Import-Code entfernen

Web durchsuchen
Websites verwenden Sie HTML-Beschreibungen, was bedeutet, dass jeder Web-Seite ein strukturiertes Dokument ist. Manchmal ist es nützlich, um Daten von ihm zu bekommen, unter Beibehaltung seiner Struktur. Web-Sites bieten nicht immer ihre Daten in einfach zu handhabenden Formate wie CSV oder JSON.

Dies ist die Zeit für Web-Crawl-Auftritte. Web Crawl ist die Praxis mit Hilfe eines Computerprogramms zum sammeln und organisieren Webseitendaten in das gewünschte Format unter Beibehaltung seiner Struktur.

Lxml und Anfragen
Lxml (http://lxml.de/) ist eine schöne Erweiterungsbibliothek verwendet, um XML und HTML-Dokumente schnell zu analysieren, auch wenn die Tags verarbeitet sehr verwirrend sind. Wir ersetzen auch das integrierte urllib2-Modul mit dem Modul Anfragen (http://docs.python-requests.org/en/latest/#), weil es schneller und besser lesbar ist. Sie können diese beiden Module installieren, mithilfe der PIP-Install-Lxml mit der PIP-Befehl Install Anfragen.

Beginnen wir mit den folgenden Import:

from lxml import htmlimport requests

Als nächstes wir Requests.get verwenden, um unsere Daten von einer Webseite abrufen, mithilfe eines HTML-Moduls zu analysieren, und speichern Sie die Ergebnisse zum Baum.

page = requests.get(‘http://econpy.pythonanywhere.com/ex/001.html‘)tree = html.fromstring(page.text)

Baum enthält jetzt die gesamte HTML-Datei in eine elegante Struktur, und wir können auf zwei Arten darauf zugreifen: XPath und CSS-Selektoren. In diesem Beispiel wählen wir die ehemaligen.

XPath ist eine Möglichkeit, Informationen in strukturierten Dokumenten, wie z. B. HTML oder XML zu finden. Eine gute Einführung in XPath sehen W3Schools.

Es gibt viele Werkzeuge, um die XPath eines Elements, wie FireBug für Firefox oder Chrome Inspektor. Wenn Sie Chrome verwenden, können Sie mit der rechten Maustaste des Elements, wählen Sie "Inspect Element", markieren Sie den Code, erneut mit der rechten Maustaste und wählen Sie "Kopie XPath".

Nach einer schnellen Analyse sehen wir, dass die Daten auf der Seite ist in zwei Elemente gespeichert, das div-Element von "Käufer-Name gehört" und die andere die Spanne der "Artikelpreis ist":

<div title="buyer-name">Carson Busses</div><span class="item-price">$29.95</span>

Mit diesem Wissen können wir die richtigen XPath-Abfrage erstellen und verwenden Sie die Lxml XPath-Funktion wie folgt:

#这将创建buyers的列表: Käufern = Tree.xpath ("//div[@title ="Name des Käufers"] / Text ()") #这将创建prices的列表: Preise = Tree.xpath ('/ / span [ @Class = "Artikelpreis"] / Text () ")

Mal sehen was wir Got:

print ‘Buyers: ‘, buyersprint ‘Prices: ‘, pricesBuyers: [‘Carson Busses‘, ‘Earl E. Byrd‘, ‘Patty Cakes‘,‘Derri Anne Connecticut‘, ‘Moe Dess‘, ‘Leda Doggslife‘, ‘Dan Druff‘,‘Al Fresco‘, ‘Ido Hoe‘, ‘Howie Kisses‘, ‘Len Lease‘, ‘Phil Meup‘,‘Ira Pent‘, ‘Ben D. Rules‘, ‘Ave Sectomy‘, ‘Gary Shattire‘,‘Bobbi Soks‘, ‘Sheila Takya‘, ‘Rose Tattoo‘, ‘Moe Tell‘] Prices: [‘$29.95‘, ‘$8.37‘, ‘$15.26‘, ‘$19.25‘, ‘$19.25‘,‘$13.99‘, ‘$31.57‘, ‘$8.49‘, ‘$14.47‘, ‘$15.86‘, ‘$11.11‘,‘$15.98‘, ‘$16.27‘, ‘$7.50‘, ‘$50.85‘, ‘$14.26‘, ‘$5.68‘,‘$15.00‘, ‘$114.07‘, ‘$10.09‘]

Herzlichen Glückwunsch! Wir haben es geschafft, alle Daten, die wir wollen, dass von einer Webseite durch Lxml und Anfrage zu kriechen. Wir halten sie in Form von Listen im Speicher. Wir können jetzt alle Arten von coole Dinge über sie: können wir es mit Python zu analysieren, oder wir können es als Datei zu speichern und mit der Welt teilen.

Wir können einige der Ideen, kühleren prüfen: ändern Sie dieses Skript zum Durchlaufen der verbleibenden Seiten in dem Dataset, oder multithreading verwenden überschreiben Sie die app, um seine Geschwindigkeit zu steigern.

Python Tutorials für crawling HTML-Seiten mit Lxml und Anfragen-Module

Kontaktiere uns

Die Inhaltsquelle dieser Seite ist aus dem Internet, und vertritt nicht die Meinung von Alibaba Cloud; auf dieser Seite erwähnte Produkte und Dienstleistungen haben keine Beziehung zu Alibaba Cloud. Wenn der Inhalt der Seite Ihrer Meinung nach verwirrend ist, schreiben sie uns bitte eine E-Mail. Wir werden das Problem innerhalb von 5 Tagen nach Erhalt Ihrer E-Mail bearbeiten.

Wenn Sie Fälle von Plagiaten aus der Community feststellen, senden Sie bitte eine E-Mail an info-contact@alibabacloud.com und legen Sie entsprechende Beweise vor. Ein Mitarbeiter wird Sie innerhalb von 5 Werktagen kontaktieren.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.