Python ist eine sehr effiziente und einflussreiche Programmiersprache. In diesem Buch geht es um die Durchsuchung des World Wide Web. Kann man mit der Programmiersprache Python Linkquellen aus unterschiedlichen Webseiten analysieren? Mithilfe von Python, einem Python-Framework namens Scrapy und einer Datenbank namens MongoDB wird in diesem Buch der Versuch gestartet, Linkquellen zu untersuchen. Untersuchte Linkquellen sollen zunächst in einer Datenbank abgelegt werden und sobald der erste Durchlauf vollendet ist, soll der Crawler die nächste gespeicherte Linkquelle aus der Datenbank entnehmen und diese Linkquelle nach weiteren Linkquellen untersuchen.
Dabei ist es wichtig, dass bei den gespeicherten Linkquellen keine Duplikate enthalten sind und die bereits untersuchten Webseiten nicht erneut untersucht werden. Kann man mit Python als Programmiersprache einfach und schnell eine hohe Anzahl an Linkquellen unterschiedlicher Webseiten aufspüren?
Zuerst tauchen wir gemeinsam in die Theorie der beiden Suchalgorithmen: Breiten- und Tiefensuche. Im Anschluss wird auf Konzeption, Voraussetzungen und Installation eingegangen, die man für einen solchen Versuch braucht.
Inhaltsverzeichnis
1 Einleitung
2 Konzeption
3 Breitensuche
4 Tiefensuche
5 Voraussetzungen
5.1 Installation
6 Praktische Untersuchung
6.1 Erstellung eines Scrapy Projekts
6.2 Items.py
6.3 Pipelines.py
6.4 Settings.py
6.5 Middlewares.py
6.6 Spiders
6.7 Konfiguration in RoboMongo
7 Python & Data Mining
7.1 Bekannte Python Bibliotheken
8 Fazit
Zielsetzung & Themen
Die Arbeit untersucht die Effizienz der Programmiersprache Python bei der automatisierten Durchsuchung des World Wide Web mittels des Scrapy-Frameworks und einer MongoDB-Datenbank, mit dem Ziel, Linkquellen strukturiert und duplikatsfrei zu erfassen.
- Grundlagen der Suchalgorithmen Breiten- und Tiefensuche
- Konfiguration einer Web-Crawler-Umgebung mit Python und Scrapy
- Integration einer MongoDB-Datenbank zur Speicherung der Daten
- Praktische Implementierung von Data-Mining-Prozessen
- Umgang mit Link-Duplikaten und Fehlerbehandlung während des Crawlings
Auszug aus dem Buch
3 Breitensuche
Die Breitensuche im englischen auch breadth first search genannt, ist ein informationstechnisches Verfahren. Bei der Breitensuche fängt die Expandierung von einem bestimmten Startknoten an und dehnt sich weiter aus. Es wird nach weiteren Knoten gesucht die mit dem Startknoten in direkter bzw. erster Ebene in Verbindung stehen, bevor die Expandierung weiter in die Tiefe geht. Sobald alle Knoten der ersten Ebene erreicht werden, kommen diese in eine Warteschlange.
Die Knoten werden nach und nach aus der Warteschlange entnommen und abgearbeitet bzw. nach weiteren Knoten in der nächsten tieferen Ebene durchsucht. Aber hierbei ist es wichtig zu wissen, dass man von einem Knoten aus nicht sofort in die Tiefe geht, sondern zunächst alle noch nicht erreichten Nachbarn des Knotens bearbeitet. Nachdem alle Knoten der ersten Ebene bearbeitet sind, wird die nächste tiefere Ebene nach Knoten untersucht und diese werden wie zuvor in die Warteschlange aufgenommen. Anschließend werden die Knoten einzeln aus der Warteschlange selektiert und bearbeitet.
In der unten zu sehenden Skizze 2 kann man beobachten wie die Suche vom Startknoten anfängt und in die erste Ebene expandiert. Anschließend expandiert die Suche weiter in die nächste tiefere Ebene. Der Suchvorgang ist nach alphabetischer Reihenfolge sortiert und dient zur Orientierung.
Zusammenfassung der Kapitel
1 Einleitung: Vorstellung der Motivation für das Thema und Definition der Zielsetzung, mittels Python und Scrapy Webseiten effizient zu crawlen.
2 Konzeption: Erläuterung des automatisierten Web-Crawler-Konzepts, bei dem gefundene Links in einer MongoDB-Datenbank gespeichert und systematisch weiterverarbeitet werden.
3 Breitensuche: Theoretische Beschreibung der Breitensuche als Suchverfahren, bei dem alle Knoten einer Ebene vollständig bearbeitet werden, bevor in die nächste Ebene expandiert wird.
4 Tiefensuche: Theoretische Abgrenzung der Tiefensuche, bei der die Suche entlang eines Pfades so tief wie möglich in das Netz vordringt, bevor ein Backtracking erfolgt.
5 Voraussetzungen: Zusammenstellung der benötigten technischen Umgebung, bestehend aus Ubuntu, Python, Scrapy, PyMongo und MongoDB.
5.1 Installation: Schritt-für-Schritt-Anleitung zur Installation des Scrapy-Frameworks und der notwendigen Python-Pakete via Terminal.
6 Praktische Untersuchung: Dokumentation des konkreten Versuchsaufbaus, einschließlich der Konfiguration des Projekts und der Funktionsweise der einzelnen Python-Skripte.
6.1 Erstellung eines Scrapy Projekts: Erläuterung der Grundstruktur eines Scrapy-Projekts und der Bedeutung der generierten Ordner und Dateien.
6.2 Items.py: Beschreibung der Definition von Daten-Containern zur strukturierten Ablage der gecrawlten Informationen.
6.3 Pipelines.py: Erklärung der Pipeline-Komponenten für die Datenverarbeitung, Validierung und Datenbankanbindung.
6.4 Settings.py: Detaillierte Betrachtung der Konfigurationsmöglichkeiten für das Crawler-Verhalten und die Datenbank-Parameter.
6.5 Middlewares.py: Analyse der Downloader- und Spider-Middlewares zur Steuerung der Anfragen und der Fehlerbehandlung.
6.6 Spiders: Beschreibung der Crawler-Logik in der Datei link_spider.py und der Steuerung des Suchvorgangs.
6.7 Konfiguration in RoboMongo: Anleitung zur visuellen Überprüfung der gespeicherten Daten mithilfe des Tools RoboMongo.
7 Python & Data Mining: Einordnung von Python als leistungsfähige Programmiersprache für komplexe Datenanalysen und Data-Mining-Aufgaben.
7.1 Bekannte Python Bibliotheken: Kurze Vorstellung zentraler Bibliotheken wie NumPy, SciPy, Scikit-learn, IPython und NetworkX.
8 Fazit: Zusammenfassende Bewertung der Effizienz des crawlers und Ausblick auf die Rolle von Python bei der Entwicklung zukünftiger Webapplikationen.
Schlüsselwörter
Web Crawler, Python, Scrapy, Breitensuche, Tiefensuche, MongoDB, Data Mining, Automatisierung, Linkquellen, Datenbank, Programmierung, Installation, Pipeline, Middleware, Webapplikation
Häufig gestellte Fragen
Worum geht es in dieser Arbeit?
Die Arbeit befasst sich mit der Entwicklung eines automatisierten Web Crawlers auf Basis von Python und dem Scrapy-Framework zur systematischen Erfassung von Linkquellen.
Was sind die zentralen Themenfelder?
Die zentralen Themen sind Suchalgorithmen, die Implementierung eines Web Crawlers, Datenbankanbindung mittels MongoDB und die Anwendung von Python im Bereich Data Mining.
Was ist das primäre Ziel der Untersuchung?
Das Ziel ist es, nachzuweisen, wie effizient und umfangreich Linkquellen mittels Python und Scrapy analysiert, strukturiert und in einer Datenbank gespeichert werden können.
Welche wissenschaftliche Methode wird verwendet?
Es wird eine praktische Untersuchung durchgeführt, bei der ein Crawler-Prototyp implementiert und dessen Funktionalität sowie die Suchalgorithmen (Breiten- und Tiefensuche) methodisch analysiert werden.
Was wird im Hauptteil behandelt?
Der Hauptteil umfasst die theoretischen Grundlagen der Suchverfahren, die technische Konfiguration der Arbeitsumgebung und die detaillierte Programmierung der einzelnen Komponenten eines Scrapy-Projekts.
Welche Schlüsselwörter charakterisieren die Arbeit?
Die Arbeit wird durch Begriffe wie Web Crawler, Python, Scrapy, Breitensuche, Datenbankanbindung und Data Mining charakterisiert.
Wie werden Duplikate bei der Suche verhindert?
Durch eine in der `pipelines.py` definierte Klasse (`DuplicatesPipeline`) werden bereits verarbeitete IDs erkannt und aussortiert.
Warum wird MongoDB für dieses Projekt eingesetzt?
MongoDB wird gewählt, weil es als frei verwendbares Datenbanktool besonders für hohe Datenmengen geeignet ist und eine flexible Speicherung der gecrawlten Strukturen ermöglicht.
Wie kann das Suchverhalten des Crawlers beeinflusst werden?
Das Suchverhalten kann über die `settings.py` (z. B. `DOWNLOAD_DELAY`) oder individuell programmierte Middlewares in der `middlewares.py` gesteuert werden.
- Citation du texte
- Torun Ünver (Auteur), 2016, Web Crawler Methodik. Breitensuche in Python mit Scrapy Framework, Munich, GRIN Verlag, https://www.grin.com/document/338113