Heim  >  Artikel  >  Backend-Entwicklung  >  Erfahrungsaustausch zum Einstieg in den Python-Crawler

Erfahrungsaustausch zum Einstieg in den Python-Crawler

小云云
小云云Original
2017-12-05 09:53:134436Durchsuche

Ein Webcrawler ist ein Programm, das automatisch Webinhalte abruft und ein wichtiger Bestandteil von Suchmaschinen ist. Webcrawler laden Webseiten aus dem World Wide Web für Suchmaschinen herunter. Im Allgemeinen unterteilt in traditionelle Crawler und fokussierte Crawler.

Das Erlernen von Reptilien ist ein schrittweiser Prozess, der als Anfänger ohne Grundkenntnisse grob in drei Phasen unterteilt werden kann: Der erste Schritt besteht darin, die erforderlichen Grundkenntnisse zu erwerben ist es, den Crawler-Code anderer zu imitieren und zu befolgen und jede Codezeile zu verstehen. In dieser Phase beginnen Sie, Ihre eigenen Ideen zur Lösung von Problemen zu entwickeln und können unabhängig ein Crawler-System entwerfen.

Zu den an Crawlern beteiligten Technologien gehören unter anderem Kenntnisse in einer Programmiersprache (hier nehmen wir Python als Beispiel), HTML-Kenntnisse, Grundkenntnisse der HTTP/HTTPS-Protokolle, reguläre Ausdrücke, Datenbankkenntnisse, und die Verwendung gängiger Paketerfassungstools, die Verwendung von Crawler-Frameworks, an denen große Crawler beteiligt sind, erfordern auch Verständnis für das Konzept der Verteilung, Nachrichtenwarteschlangen, häufig verwendete Datenstrukturen und Algorithmen, Caching und sogar die Anwendung von maschinellem Lernen . Große Systeme sind auf viele Technologien zur Unterstützung angewiesen. Crawler dienen nur der Datengewinnung und -gewinnung und können daher auch auf Datenanalyse, Data Mining und andere Bereiche ausgeweitet werden, um Entscheidungen für Unternehmen zu treffen zu tun.

Muss ich also alle oben genannten Kenntnisse erlernen, bevor ich mit dem Schreiben eines Crawlers beginnen kann? Natürlich nicht, solange Sie Python-Code schreiben können, können Sie direkt mit dem Fahren beginnen ist viel sicherer als Autofahren.

Um einen Crawler in Python zu schreiben, müssen Sie zunächst Python kennen, die grundlegende Syntax verstehen und wissen, wie man Funktionen, Klassen und allgemeine Methoden in gängigen Datenstrukturen wie Liste und Diktat verwendet grundlegende Einführung. Dann müssen Sie HTML verstehen. Es gibt eine 30-minütige Einführung in HTML im Internet, die ausreicht. Dann gibt es noch das Wissen über HTTP. Das Grundprinzip eines Crawlers ist der Prozess des Herunterladens von Daten von einem Remote-Server über eine Netzwerkanfrage, und die Technologie hinter dieser Netzwerkanfrage basiert auf dem HTTP-Protokoll. Als Crawler der Einstiegsklasse müssen Sie die Grundprinzipien des HTTP-Protokolls verstehen. Obwohl die HTTP-Spezifikation nicht in einem Buch geschrieben werden kann, können die ausführlichen Inhalte später gelesen werden, indem Theorie und Praxis kombiniert werden.

Netzwerkanforderungsframeworks sind alle Implementierungen des HTTP-Protokolls. Beispielsweise ist die berühmte Netzwerkanforderungsbibliothek Requests eine Netzwerkbibliothek, die einen Browser simuliert, der HTTP-Anforderungen sendet. Nachdem Sie das HTTP-Protokoll verstanden haben, können Sie speziell netzwerkbezogene Module erlernen. Beispielsweise enthält Python urllib2 (urllib in Python3), httplib, Cookie usw. Sie können diese natürlich direkt überspringen, um die Verwendung zu erlernen Direkte Anfragen setzen voraus, dass Sie mit den grundlegenden Inhalten des HTTP-Protokolls vertraut sind. Ein Buch, das ich hier empfehlen muss, ist „HTTP Illustrated“. Bei den nach unten gecrawlten Daten handelt es sich größtenteils um HTML-Text und einige Daten basieren auf dem XML-Format oder JSON-Format. Um diese Daten korrekt zu verarbeiten, müssen Sie mit den Lösungen für jeden Datentyp vertraut sein. JSON-Daten können beispielsweise direkt verwendet werden In Python können Sie für das Modul json von HTML-Daten BeautifulSoup, lxml und andere Bibliotheken verwenden. Für XML-Daten können Sie Bibliotheken von Drittanbietern wie untangle und xmltodict verwenden.

Für Einsteiger ist es nicht erforderlich, reguläre Ausdrücke zu lernen. Sie können sie beispielsweise nach dem Zurückkriechen der Daten bereinigen Dass mit regulären Ausdrücken Wenn die String-Operationsmethode überhaupt nicht verarbeitet werden kann, können Sie versuchen, reguläre Ausdrücke zu verstehen, die oft mit halbem Aufwand das Doppelte des Ergebnisses erzielen können. Mit dem re-Modul von Python können reguläre Ausdrücke verarbeitet werden. Hier sind einige empfohlene Tutorials: 30-minütiges Einführungstutorial zu regulären Ausdrücken Python-Leitfaden für reguläre Ausdrücke Vollständiger Leitfaden zu regulären Ausdrücken

Nach der Datenbereinigung ist eine dauerhafte Speicherung erforderlich. Sie können Dateispeicher wie CSV-Dateien verwenden. Sie können auch Datenbankspeicher verwenden, einfach SQLite verwenden, für professionellere Zwecke MySQL oder die verteilte Dokumentendatenbank MongoDB verwenden. Diese Datenbanken sind sehr freundlich zu Python und verfügen über vorgefertigte Bibliotheksunterstützung. Python betreibt die MySQL-Datenbank und stellt über Python eine Verbindung zur Datenbank her.

Der grundlegende Prozess von der Datenerfassung über die Bereinigung bis zur Speicherung ist abgeschlossen. Als nächstes ist es an der Zeit, Ihre internen Fähigkeiten zu testen. Viele Websites haben Anti-Crawler-Strategien eingerichtet. Sie versuchen mit allen Mitteln, Sie daran zu hindern, auf ungewöhnliche Weise an Daten zu gelangen. Beispielsweise gibt es alle möglichen seltsamen Bestätigungscodes, um Ihre Anfragevorgänge einzuschränken und die Anfragegeschwindigkeit zu begrenzen die IP und verschlüsseln sogar die Daten, kurz gesagt, um die Kosten für die Datenbeschaffung zu erhöhen. Zu diesem Zeitpunkt müssen Sie sich mehr Wissen aneignen. Sie müssen das HTTP-Protokoll gründlich verstehen, Sie müssen gängige Verschlüsselungs- und Entschlüsselungsalgorithmen verstehen, Sie müssen Cookies in HTTP, HTTP-Proxy und verschiedene HEADER in HTTP verstehen. Reptilien und Anti-Reptilien sind ein Paar, das sich gegenseitig liebt und tötet. Jedes Mal, wenn das Tao hoch ist, ist die Magie hoch. Es gibt keine etablierte einheitliche Lösung für den Umgang mit Anti-Crawlern. Dies hängt von Ihrer Erfahrung und dem Wissenssystem ab, das Sie beherrschen. Dies können Sie nicht mit nur einem 21-tägigen Einführungs-Tutorial erreichen.

Datenstruktur und Algorithmus

Um ein groß angelegtes Crawling durchzuführen, beginnen wir normalerweise mit dem Crawlen von einer URL und fügen dann den auf der Seite analysierten URL-Link zu den zu crawlenden URLs hinzu Warteschlange oder Priorität verwenden Die Warteschlange wird verwendet, um zwischen dem Crawlen einiger Websites zuerst und dem Crawlen einiger Websites später zu unterscheiden. Jedes Mal, wenn eine Seite gecrawlt wird, unabhängig davon, ob der Tiefen- oder Breitenalgorithmus zum Crawlen des nächsten Links verwendet wird. Jedes Mal, wenn eine Netzwerkanfrage initiiert wird, ist ein DNS-Auflösungsprozess erforderlich (Umwandlung der URL in eine IP). Um eine wiederholte DNS-Auflösung zu vermeiden, müssen wir die aufgelöste IP zwischenspeichern. Es gibt so viele URLs, die gecrawlt wurden und welche nicht. Wenn jedoch eine große Anzahl von URLs gefunden wird, verwenden Sie eine Wörterbuchstruktur, um die gecrawlten URLs zu speichern , Der vom Wörterbuch belegte Speicherplatz ist zu diesem Zeitpunkt sehr groß. Wenn Sie die Crawler-Effizienz verbessern möchten, müssen Sie die Verwendung eines Bloom-Filters in Betracht ziehen. Sie sollten Multithreads, Multiprozesse, Coroutinen oder verteilte Operationen verwenden.

Über die Praxis

Es gibt viele Crawler-Tutorials im Internet. Die Prinzipien sind im Grunde die gleichen, aber Sie können den Online-Tutorials folgen Lernen Sie, das Anmelden auf einer Website und das Einchecken zu simulieren. Kriechen Sie beispielsweise durch Douban nach Filmen, Büchern usw. Durch kontinuierliches Üben, von der Begegnung mit Problemen bis hin zu deren Lösung, ist ein solcher Gewinn nicht mit dem Lesen eines Buches zu vergleichen.

Gemeinsame Bibliotheken für Crawler

  • urllib, urlib2 (urllib in Python) Python integrierte Netzwerkanforderungsbibliothek

  • urllib3 : Thread-sichere HTTP-Netzwerkanforderungsbibliothek

  • Anfragen: Die am weitesten verbreitete Netzwerkanforderungsbibliothek, kompatibel mit py2 und py3

  • Grequests: asynchron Anfragen

  • BeautifulSoup: Bibliothek zum Parsen von HTML- und XML-Operationen

  • lxml: Eine andere Möglichkeit, HTML und XML zu verarbeiten

  • Tornado: Asynchrones Netzwerk-Framework

  • Gevent: Asynchrones Netzwerk-Framework

  • Scrapy: das beliebteste Crawler-Framework

  • pyspider: Crawler-Framework

  • xmltodict: XML in Wörterbuch konvertieren

  • pyquery: HTML wie jQuery betreiben

  • Jieba: Wortsegmentierung

  • SQLAlchemy: ORM-Framework

  • Sellerie: Nachrichtenwarteschlange

  • rq: Einfache Nachrichtenwarteschlange

  • python-goose: Text aus HTML extrahieren

Buchempfehlungen:

  • "HTTP Illustrated"

  • "The Definitive Guide to HTTP"

  • "Computer Networks: Automation Top -down-Methode》

  • 《Webcrawler in Python schreiben》

  • 《Python-Netzwerkdatenerfassung》

  • "Reguläre Ausdrücke beherrschen"

  • "Erste Schritte mit Python zum Üben"

  • "Den eigenen Web-Crawler schreiben"

  • "Crypto101"

  • "Illustrated Cryptozoology Technology"

Der obige Inhalt bezieht sich auf die Einstiegsebene Erfahrungen mit der Python-Crawler-Technologie Teilen, ich hoffe, es kann allen helfen.

Verwandte Empfehlungen:

Einführung in den Python3-Basis-Crawler

Pythons einfachstes Web-Crawler-Tutorial

Python-Crawler-Praxis

Das obige ist der detaillierte Inhalt vonErfahrungsaustausch zum Einstieg in den Python-Crawler. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn