Vorwort
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Für diejenigen, die diese Fähigkeit nicht entwickelt haben, kann Computerprogrammierung wie eine Art Magie erscheinen. Wenn Programmieren Magie ist, dann ist Web Scraping Zauberei: die Anwendung von Magie für besonders beeindruckende und nützliche - und dennoch überraschend mühelose - Leistungen.
In meinen Jahren als Softwareentwickler habe ich festgestellt, dass es nur wenige Programmierpraktiken gibt, die sowohl Programmierer als auch Laien so begeistern wie Web Scraping. Die Fähigkeit, einen einfachen Bot zu schreiben, der Daten sammelt und sie über ein Terminal weiterleitet oder in einer Datenbank speichert, ist zwar nicht schwierig, aber es fehlt immer ein gewisser Nervenkitzel und ein Gefühl der Möglichkeit, egal wie oft man es schon gemacht hat.
Wenn ich mit anderen Programmierer/innen über Web Scraping spreche, gibt es leider viele Missverständnisse und Verwirrung über diese Praxis. Manche sind sich nicht sicher, ob es legal ist (ist es) oder wie man mit Problemen wie JavaScript-lastigen Seiten oder erforderlichen Logins umgeht. Viele wissen nicht, wie sie ein großes Web Scraping-Projekt starten sollen oder wo sie die gesuchten Daten finden können. Dieses Buch will mit vielen dieser häufigen Fragen und falschen Vorstellungen über Web Scraping aufräumen und bietet gleichzeitig einen umfassenden Leitfaden für die häufigsten Web Scraping-Aufgaben.
Web Scraping ist ein vielfältiges und sich schnell veränderndes Gebiet, und ich habe versucht, sowohl übergeordnete Konzepte als auch konkrete Beispiele zu liefern, um so gut wie jedes Datenerfassungsprojekt abzudecken, das dir begegnen könnte. Unter findest du Code-Beispiele, um diese Konzepte zu veranschaulichen und sie auszuprobieren. Die Code-Beispiele selbst können mit oder ohne Quellenangabe verwendet und verändert werden (obwohl die Nennung der Quelle immer willkommen ist). Alle Codebeispiele stehen auf GitHub zum Anschauen und Herunterladen zur Verfügung.
Was ist Web Scraping?
Das automatisierte Sammeln von Daten aus dem Internet ist fast so alt wie das Internet selbst. Obwohl Web Scraping kein neuer Begriff ist, war die Praxis in den vergangenen Jahren eher als Screen Scraping, Data Mining, Web Harvesting oder ähnliche Varianten bekannt. Der allgemeine Konsens scheint heute Web Scraping zu bevorzugen, daher verwende ich diesen Begriff im gesamten Buch, obwohl ich Programme, die speziell mehrere Seiten durchforsten, auch als Web Crawler bezeichne oder die Web Scraping Programme selbst als Bots bezeichne.
Theoretisch ist Web Scraping das Sammeln von Daten durch andere Mittel als ein Programm, das mit einer API interagiert (oder natürlich durch einen Menschen, der einen Webbrowser benutzt). Am häufigsten wird durch das Schreiben eines automatisierten Programms erreicht, das einen Webserver abfragt, Daten anfordert (normalerweise in Form von HTML und anderen Dateien, aus denen Webseiten bestehen) und diese Daten dann analysiert, um die benötigten Informationen zu extrahieren.
In der Praxis umfasst Web Scraping eine Vielzahl von Programmiertechniken und Technologien wie Datenanalyse, Parsing natürlicher Sprache und Informationssicherheit. Weil das Feld so breit gefächert ist, behandelt dieses Buch in Teil I die grundlegenden Prinzipien des Web Scraping und Crawling und geht in Teil II auf fortgeschrittene Themen ein. Ich empfehle allen Leserinnen und Lesern, den ersten Teil sorgfältig zu studieren und sich bei Bedarf mit den spezifischeren Themen im zweiten Teil zu beschäftigen.
Warum Web Scraping?
Wenn du nur über einen Browser auf das Internet zugreifst ( ), entgehen dir eine ganze Reihe von Möglichkeiten. Obwohl Browser unter anderem für die Ausführung von JavaScript, die Anzeige von Bildern und die Anordnung von Objekten in einem für Menschen lesbaren Format praktisch sind, eignen sich Web Scraper hervorragend, um schnell große Datenmengen zu sammeln und zu verarbeiten. Anstatt eine Seite nach der anderen durch das schmale Fenster eines Monitors zu betrachten, kannst du Datenbanken mit Tausenden oder sogar Millionen von Seiten auf einmal abrufen.
Außerdem können Web Scraper Orte aufsuchen, die traditionelle Suchmaschinen nicht erreichen. Eine Google-Suche nach "billigste Flüge nach Boston" führt zu einer Reihe von Anzeigen und beliebten Flugsuch-Websites. Google kennt nur die Inhalte dieser Websites, nicht aber die genauen Ergebnisse der verschiedenen Suchanfragen, die in eine Flugsuchmaschine eingegeben werden. Ein gut entwickelter Web Scraper kann jedoch die Kosten für einen Flug nach Boston im Laufe der Zeit auf einer Vielzahl von Websites aufzeichnen und dir den besten Zeitpunkt für den Kauf deines Tickets nennen.
Du fragst dich jetzt vielleicht: "Ist das Sammeln von Daten nicht das, wofür APIs da sind?" (Wenn du dich mit APIs nicht auskennst, lies Kapitel 12.) APIs können fantastisch sein, wenn du eine findest, die für deine Zwecke geeignet ist. Sie dienen dazu, einen bequemen Strom von gut formatierten Daten von einem Computerprogramm zu einem anderen zu liefern. Du kannst eine API für viele Arten von Daten finden, die du verwenden möchtest, z. B. für Twitter-Posts oder Wikipedia-Seiten. Im Allgemeinen ist es besser, eine API zu verwenden (wenn es eine gibt), als einen Bot zu erstellen, um dieselben Daten zu erhalten. Es kann jedoch sein, dass es keine API gibt oder dass sie für deine Zwecke nicht nützlich ist, und zwar aus verschiedenen Gründen:
-
Du sammelst relativ kleine, begrenzte Datensätze über eine große Sammlung von Websites ohne eine einheitliche API.
-
Die Daten, die du suchst, sind ziemlich klein oder ungewöhnlich und der Ersteller war nicht der Meinung, dass sie eine API rechtfertigen.
-
Die Quelle verfügt nicht über die Infrastruktur oder die technischen Möglichkeiten, eine API zu erstellen.
-
Die Daten sind wertvoll und/oder geschützt und nicht dazu bestimmt, weit verbreitet zu werden.
Selbst wenn es eine API gibt, kann es sein, dass das Anfragevolumen und die Ratenbeschränkungen, die Datentypen oder das Format der Daten für deine Zwecke nicht ausreichen.
Hier kommt das Web Scraping ins Spiel. Von wenigen Ausnahmen abgesehen, kannst du Daten, die du in deinem Browser sehen kannst, auch über ein Python-Skript abrufen. Wenn du mit einem Skript auf sie zugreifen kannst, kannst du sie in einer Datenbank speichern. Und wenn du sie in einer Datenbank speichern kannst, kannst du praktisch alles mit diesen Daten machen.
Es gibt natürlich viele praktische Anwendungen für den Zugang zu nahezu unbegrenzten Daten: Marktprognosen, maschinelle Sprachübersetzung und sogar medizinische Diagnostik haben enorm von der Möglichkeit profitiert, Daten von Nachrichtenseiten, übersetzten Texten und Gesundheitsforen abzurufen und zu analysieren.
Sogar in der Kunstwelt hat das Web Scraping neue Grenzen für die Kreativität eröffnet. Das Projekt "We Feel Fine" von Jonathan Harris und Sep Kamvar aus dem Jahr 2006 durchforstete eine Vielzahl englischsprachiger Blogseiten nach Sätzen, die mit "I feel" oder "I am feeling" beginnen. Daraus entstand eine beliebte Datenvisualisierung, die beschreibt, wie sich die Welt Tag für Tag und Minute für Minute fühlt.
Ganz gleich, in welchem Bereich du tätig bist, Web Scraping bietet fast immer eine Möglichkeit, Geschäftspraktiken effektiver zu gestalten, die Produktivität zu verbessern oder sogar ein ganz neues Gebiet zu erschließen.
Über dieses Buch
Dieses Buch soll nicht nur als Einführung in das Web Scraping dienen, sondern als umfassender Leitfaden zum Sammeln, Verarbeiten und Nutzen von Daten aus unkooperativen Quellen. Obwohl es die Programmiersprache Python verwendet und viele Python-Grundlagen abdeckt, sollte es nicht als Einführung in die Sprache verwendet werden.
Wenn du überhaupt keine Python-Kenntnisse hast, könnte dieses Buch eine kleine Herausforderung sein. Bitte verwende es nicht als Einführungslektüre für Python. Ich habe versucht, alle Konzepte und Codebeispiele auf dem Niveau von Anfängern und Fortgeschrittenen in der Python-Programmierung zu halten, um den Inhalt für eine große Bandbreite von Lesern zugänglich zu machen. Zu diesem Zweck gibt es gelegentlich Erklärungen zu fortgeschrittener Python-Programmierung und allgemeinen Informatik-Themen, wo es angebracht ist. Wenn du ein fortgeschrittener Leser bist, kannst du diese Teile ruhig überfliegen!
Wenn du auf der Suche nach einem umfassenderen Python-Buch bist ( ), ist Introducing Python von Bill Lubanovic (O'Reilly) ein gutes, wenn auch langes Handbuch. Für diejenigen, die weniger Zeit haben, ist die Videoserie Introduction to Python von Jessica McKellar (O'Reilly) eine hervorragende Ressource. Auch Think Python von Allen Downey (O'Reilly), einem ehemaligen Professor von mir, hat mir gut gefallen. Vor allem das letztgenannte Buch ist ideal für Programmieranfänger und vermittelt neben der Sprache Python auch Konzepte aus den Bereichen Informatik und Softwareentwicklung.
Technische Bücher können sich oft auf eine einzige Sprache oder Technologie konzentrieren, aber Web Scraping ist ein relativ uneinheitliches Thema mit Praktiken, die den Einsatz von Datenbanken, Webservern, HTTP, HTML, Internetsicherheit, Bildverarbeitung, Datenwissenschaft und anderen Tools erfordern. Dieses Buch versucht, all diese und andere Themen aus der Perspektive des "Datensammelns" zu behandeln. Es sollte nicht als vollständige Abhandlung eines dieser Themen dienen, aber ich glaube, dass sie ausführlich genug behandelt werden, damit du mit dem Schreiben von Web Scrapers beginnen kannst!
Teil I befasst sich eingehend mit dem Thema Web Scraping und Web Crawling, wobei der Schwerpunkt auf einer kleinen Handvoll Bibliotheken liegt, die im gesamten Buch verwendet werden. Teil I kann problemlos als umfassendes Nachschlagewerk für diese Bibliotheken und Techniken verwendet werden (mit einigen Ausnahmen, für die zusätzliche Referenzen angegeben werden). Die im ersten Teil vermittelten Fähigkeiten sind wahrscheinlich für jeden nützlich, der einen Web Scraper schreibt, unabhängig von seinem speziellen Ziel oder seiner Anwendung.
Teil II behandelt zusätzliche Themen, die für den Leser beim Schreiben von Web-Scrapern nützlich sein können, aber nicht für alle Scraper immer nützlich sind. Diese Themen sind leider zu umfangreich, um sie in einem einzigen Kapitel zusammenzufassen. Aus diesem Grund wird häufig auf andere Ressourcen verwiesen, um zusätzliche Informationen zu erhalten.
Die Struktur dieses Buches ermöglicht es dir, einfach zwischen den Kapiteln hin und her zu springen, um nur die Web Scraping-Technik oder die Informationen zu finden, die du suchst. Wenn ein Konzept oder ein Teil des Codes auf einem anderen aufbaut, das in einem früheren Kapitel erwähnt wurde, verweise ich ausdrücklich auf den Abschnitt, in dem es behandelt wurde.
In diesem Buch verwendete Konventionen
Die folgenden typografischen Konventionen werden in diesem Buch verwendet:
- Kursiv
-
Weist auf neue Begriffe, URLs, E-Mail-Adressen, Dateinamen und Dateierweiterungen hin.
Constant width
-
Wird für Programmlistings sowie innerhalb von Absätzen verwendet, um auf Programmelemente wie Variablen- oder Funktionsnamen, Datenbanken, Datentypen, Umgebungsvariablen, Anweisungen und Schlüsselwörter hinzuweisen.
Constant width bold
-
Zeigt Befehle oder anderen Text an, der vom Benutzer eingegeben werden soll.
Constant width italic
-
Zeigt Text an, der durch vom Benutzer eingegebene Werte oder durch kontextabhängige Werte ersetzt werden soll.
Tipp
Dieses Element steht für einen Tipp oder eine Anregung.
Hinweis
Dieses Element steht für einen allgemeinen Hinweis.
Warnung
Dieses Element weist auf eine Warnung oder einen Warnhinweis hin.
Code-Beispiele verwenden
Zusätzliches Material von (Code-Beispiele, Übungen usw.) steht unter https://github.com/REMitchell/python-scraping zum Download bereit .
Dieses Buch soll dir helfen, deine Arbeit zu erledigen. Wenn der Beispielcode in diesem Buch für dich nützlich ist, darfst du ihn in deinen Programmen und deiner Dokumentation verwenden. Du musst uns nicht um Erlaubnis fragen, es sei denn, du reproduzierst einen großen Teil des Codes. Wenn du zum Beispiel ein Programm schreibst, das mehrere Teile des Codes aus diesem Buch verwendet, brauchst du keine Erlaubnis. Wenn du eine CD-ROM mit Beispielen aus den O'Reilly-Büchern verkaufst oder verteilst, ist eine Genehmigung erforderlich. Die Beantwortung einer Frage mit einem Zitat aus diesem Buch und einem Beispielcode erfordert keine Genehmigung. Wenn du einen großen Teil des Beispielcodes aus diesem Buch in die Dokumentation deines Produkts aufnimmst, ist eine Erlaubnis erforderlich.
Wir freuen uns über eine Namensnennung, verlangen sie aber nicht. Eine Quellenangabe umfasst normalerweise den Titel, den Autor, den Verlag und die ISBN. Ein Beispiel: "Web Scraping with Python, Second Edition von Ryan Mitchell (O'Reilly). Copyright 2018 Ryan Mitchell, 978-1-491-998557-1."
Wenn du der Meinung bist, dass deine Verwendung von Codebeispielen nicht unter die Fair-Use-Regelung oder die hier erteilte Erlaubnis fällt, kannst du uns gerne unter permissions@oreilly.com kontaktieren .
Leider ist es schwierig, gedruckte Bücher auf dem neuesten Stand zu halten. Beim Web Scraping stellt dies eine zusätzliche Herausforderung dar, da die vielen Bibliotheken und Websites, auf die das Buch verweist und von denen der Code oft abhängt, gelegentlich geändert werden und Codebeispiele fehlschlagen oder unerwartete Ergebnisse liefern können. Wenn du die Codebeispiele ausführen möchtest, führe sie bitte aus dem GitHub-Repository aus und kopiere sie nicht direkt aus dem Buch. Ich und die Leserinnen und Leser dieses Buches, die einen Beitrag leisten wollen (darunter vielleicht auch du!), werden sich bemühen, das Repository mit den erforderlichen Änderungen und Hinweisen auf dem neuesten Stand zu halten.
Zusätzlich zu den Codebeispielen werden oft Terminalbefehle bereitgestellt, um zu zeigen, wie man Software installiert und ausführt. In der Regel sind diese Befehle auf Linux-basierte Betriebssysteme ausgerichtet, können aber auch von Windows-Benutzern mit einer richtig konfigurierten Python-Umgebung und Pip-Installation verwendet werden. Wenn dies nicht der Fall ist, habe ich Anleitungen für alle gängigen Betriebssysteme oder externe Verweise für Windows-Benutzer bereitgestellt, um die Aufgabe zu erledigen.
O'Reilly Online Learning
Hinweis
Seit mehr als 40 Jahren bietet O'Reilly Media Schulungen, Wissen und Einblicke in Technologie und Wirtschaft, um Unternehmen zum Erfolg zu verhelfen.
Unser einzigartiges Netzwerk von Experten und Innovatoren teilt sein Wissen und seine Erfahrung durch Bücher, Artikel und unsere Online-Lernplattform. Die Online-Lernplattform von O'Reilly bietet dir On-Demand-Zugang zu Live-Trainingskursen, ausführlichen Lernpfaden, interaktiven Programmierumgebungen und einer umfangreichen Text- und Videosammlung von O'Reilly und über 200 anderen Verlagen. Weitere Informationen erhältst du unter http://oreilly.com.
Wie du uns kontaktierst
Bitte richte Kommentare und Fragen zu diesem Buch an den Verlag:
- O'Reilly Media, Inc.
- 1005 Gravenstein Highway Nord
- Sebastopol, CA 95472
- 800-998-9938 (in den Vereinigten Staaten oder Kanada)
- 707-829-0515 (international oder lokal)
- 707-829-0104 (Fax)
Wir haben unter eine Webseite für dieses Buch, auf der wir Errata, Beispiele und zusätzliche Informationen auflisten. Du kannst diese Seite unter http://oreil.ly/1ePG2Uj aufrufen .
Wenn du Kommentare oder technische Fragen zu diesem Buch stellen möchtest, sende eine E-Mail an bookquestions@oreilly.com.
Neuigkeiten und weitere Informationen zu unseren Büchern und Kursen findest du auf unserer Website unter http://www.oreilly.com.
Finde uns auf Facebook: http://facebook.com/oreilly
Folge uns auf Twitter: http://twitter.com/oreillymedia
Schau uns auf YouTube: http://www.youtube.com/oreillymedia
Danksagungen
So wie einige der besten Produkte aus einem Meer von Nutzerfeedback entstehen, hätte es dieses Buch ohne die Hilfe vieler Mitarbeiter, Cheerleader und Redakteure niemals in irgendeiner nützlichen Form geben können. Ich danke den Mitarbeitern von O'Reilly für ihre großartige Unterstützung bei diesem etwas unkonventionellen Thema, meinen Freunden und meiner Familie, die mir mit Ratschlägen zur Seite standen und spontane Lesungen ertrugen, und meinen Kollegen bei HedgeServ, denen ich jetzt wahrscheinlich viele Stunden Arbeit schulde.
Mein besonderer Dank gilt Allyson MacDonald, Brian Anderson, Miguel Grinberg und Eric VanWyk für ihr Feedback, ihre Ratschläge und ihre gelegentliche Zärtlichkeit. Einige Abschnitte und Code-Beispiele sind direkt auf ihre Anregungen zurückzuführen.
Ich danke Yale Specht für seine grenzenlose Geduld in den letzten vier Jahren und zwei Ausgaben, für die anfängliche Ermutigung, dieses Projekt zu verfolgen, und für sein stilistisches Feedback während des Schreibprozesses. Ohne ihn wäre dieses Buch in der Hälfte der Zeit geschrieben worden, wäre aber nicht annähernd so nützlich gewesen.
Zum Schluss möchte ich mich bei Jim Waldo bedanken, der diese ganze Sache vor vielen Jahren ins Rollen gebracht hat, als er einem jungen und beeinflussbaren Teenager eine Linux-Box und The Art and Science of C schickte.
Get Web Scraping mit Python, 2. Auflage now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.