Vergleich Aktueller Web-Crawling-Werkzeuge
Total Page:16
File Type:pdf, Size:1020Kb
Hochschule Wismar University of Applied Sciences Technology, Business and Design Fakult¨at fur¨ Ingenieurwissenschaften, Bereich EuI Bachelor-Thesis Vergleich aktueller Web-Crawling-Werkzeuge Gedruckt am: 30. April 2021 Eingereicht am: von: Christoph Werner Betreuende Professorin: Prof. Dr.-Ing. Antje Raab-Dusterh¨ ¨oft Zweitbetreuer: Prof. Dr.-Ing. Matthias Kreuseler Aufgabenstellung Das Ziel der Bachelor Thesis ist ein Vergleich aktueller Web-Crawling-Werkzeuge. Die Crawler sind hinsichtlich ihrer Funktionsweise und Crawling-Ergebnisse zu ver- gleichen und zu bewerten. Des Weiteren ist ein Tool zu konzeptionieren, welches diese Werkzeuge fur¨ die Nutzung in Laborpraktika verfugbar¨ macht. 3 Kurzreferat Webcrawling im Verbund mit Webscraping ist eine der grundlegenden Technologien, um gezielt und automatisiert Daten aus dem Internet zu sammeln. Zun¨achst wird in dieser Thesis auf die Grundlagen des Crawlings und Scrapings eingegangen. Hierbei soll besonderes Augenmerk auf der Architektur und Funkti- onsweise eines Crawlers, dem Robots Exclusion Protocol (REP), zu bedenkende Sicherheitsaspekte, sowie Anti-Crawling/Scraping-Maßnahmen liegen. Darauf aufbauend werden verschiedenste Crawling Frameworks auf Grundlage ihrer Dokumentation bewertet und gegenubergestellt.¨ Abschließend wird ein Tool mit einer grafischen Benutzeroberfl¨ache (GUI) zum Ver- gleich von verschiedenen Crawling Frameworks entwickelt. 4 Abstract Web crawling in combination with web scraping is the key technology for the targeted and automated collection of data from the World Wide Web. First of all, this thesis deals with the basics of crawling and scraping. Special at- tention will be paid to the architecture and functionality of a crawler, the Ro- bots Exclusion Protocol (REP), security aspects to be considered as well as anti- crawling/scraping measures. Based on this, various crawling frameworks are evaluated and compared on the basis of their documentation. Afterwards a tool with a Graphical User Interface (GUI) for the comparison of different crawling frameworks will be developed. 5 Inhaltsverzeichnis Inhaltsverzeichnis 1 Motivation ................................... 10 2 Grundlegendes zu Webcrawlern ....................... 11 2.1 Architektur eines modernen Crawlers.................. 11 2.2 Downloader und Parser Prozess..................... 12 2.3 Robots Exclusion Protocol........................ 13 2.3.1 Implementierung als robots.txt................. 13 2.3.2 Implementierung als META-Tag................. 15 2.3.3 Sicherheitsaspekte........................ 15 2.4 Crawler Identifizierung.......................... 16 2.5 Crawling-Richtlininen........................... 17 2.5.1 Selection Policy (Auswahlrichtlinie)............... 17 2.5.2 Re-Visit Policy (Richtlinie fur¨ erneuten Aufruf)........ 20 2.5.3 Politeness Policy (H¨oflichkeitsrichtlinie)............. 22 2.5.4 Parallelization Policy (Parallelisierungsrichtlinie)........ 23 2.6 Maßnahmen gegen Crawler........................ 24 2.6.1 Prufung¨ der HTTP Request Header............... 24 2.6.2 Blockieren vonIP-Adressen................... 24 2.6.3 Inhaltslose Gestaltung von Fehlermeldungen.......... 25 2.6.4 Honeypot Fallen......................... 25 2.6.5 Regelm¨aßiges Andern¨ des HTML Code............. 25 2.6.6 Verstecken von Inhalten..................... 25 2.7 Nutzung von Crawlern.......................... 26 3 Eigenschaften des optimalen Crawlers ................... 28 3.1 Robuste Extraktion von Links...................... 28 3.2 Datenbank und Datenexport....................... 28 3.3 Ausfuhren¨ von JavaScript........................ 28 3.4 Anwendung des REP........................... 29 3.5 Passende Request Header........................ 29 6 Inhaltsverzeichnis 3.6 Richtlinienanwendung.......................... 29 3.7 Skalierbarkeit............................... 29 3.8 Umgehen eines Banns durch Adminstratoren.............. 30 4 Bewertungsschema .............................. 31 4.1 Datenextraktionsmechanismen...................... 31 4.2 Datenbankanbindung........................... 32 4.3 JavaScript Unterstutzung¨ ........................ 32 4.4 Datenexport................................ 33 4.5 Anwendung des Robots Exclusion Protocol............... 33 4.6 Request Header Anpassung....................... 34 4.7 Integrierte Crawling-Richtlinien..................... 34 4.8 Skalierbarkeit............................... 35 4.9 Proxyserverunterstutzung¨ ........................ 35 5 Bewertung der vorausgew¨ahlten Tools ................... 36 5.1 Einschr¨ankungen............................. 36 5.2 Ungewichtete Bewertung......................... 38 5.3 Gewichtung der Bewertungskriterien.................. 39 5.4 Gewichtete Bewertung.......................... 40 5.5 Erl¨auterung der Notenvergabe bei Scrapy, Apache Nutch und Storm- crawler................................... 42 5.5.1 Scrapy............................... 42 5.5.2 Apache Nutch........................... 44 5.5.3 StormCrawler........................... 45 5.6 Ergebnisanalyse.............................. 47 5.6.1 Test auf Normalverteilung der Noten.............. 47 5.6.2 Vergleich der Tools........................ 48 5.6.3 Spezialf¨alle in der Auswahl.................... 49 6 Funktionsweisen der drei bestbewerteten Werkzeuge .......... 50 6.1 Scrapy................................... 50 6.2 Apache Nutch............................... 52 6.3 StormCrawler............................... 54 7 Werkzeugtest .................................. 56 7.1 Vorgaben fur¨ Crawler im Test...................... 56 7.2 Testvorkehrungen............................. 57 7.2.1 Proxy-Pool............................ 57 7 Inhaltsverzeichnis 7.2.2 User-Agent-Pool......................... 57 7.2.3 Seed-URLs............................ 57 7.3 Test von Scrapy.............................. 58 7.3.1 Konfigurationen von Scrapy Crawler.............. 58 7.3.2 Auswertung von Scrapy..................... 59 7.4 Test von Apache Nutch.......................... 60 7.4.1 Konfigurationsdateien fur¨ Apache Nutch Crawler....... 60 7.4.2 Auswertung von Apache Nutch................. 62 7.5 Test von StormCrawler.......................... 63 7.5.1 Vorausgesetzte Programme fur¨ Stromcrawler.......... 63 7.5.2 Konfigurationsdatei fur¨ StromCrawler.............. 65 7.5.3 Auswertung von StormCrawler................. 66 7.6 Vergleich der Ergebnisse......................... 67 8 Tool fur¨ das Praktikum ............................ 69 8.1 Anforderungen an das Tool........................ 69 8.2 Grafische Benutzeroberfl¨ache des Tools................. 69 8.3 Verarbeitung der Formulareingaben................... 71 8.3.1 Auswahl des Crawlers...................... 71 8.3.2 Generierung von Skripten fur¨ Scrapy.............. 71 8.3.3 Generierung von Dateien fur¨ Apache Nutch.......... 72 8.3.4 Generierung von Stormcrawler-Dateien............. 73 8.4 Zu bedenkende Punkte bei Generierung von Konfigurationsdateien.. 74 9 Fazit ....................................... 77 Literatur ...................................... 79 Bildverzeichnis ................................... 87 Tabellenverzeichnis ................................ 88 Codeverzeichnis .................................. 89 Abkurzungen¨ .................................... 91 Selbstst¨andigkeitserkl¨arung ........................... 93 Thesen ....................................... 94 A Liste von h¨andisch gesammelten Crawling-Werkzeugen ......... 95 8 Inhaltsverzeichnis B Code Anhang: Scrapy ............................. 97 C Code Anhang: Apache Nutch ........................ 106 D Code Anhang: Stromcrawler ......................... 114 Daten-CD ..................................... 118 9 Kapitel 1. Motivation 1 Motivation Auf Grund des stetig wachsenden Umfangs des Internets und den dadurch steigen- den Informationsgehalt wird es n¨otig die Inhalte, oder zumindest einen Großteil davon, zu indexieren. Wie in einer Bibliothek wird ein Verzeichnis angelegt, welches Grundinformationen zu dem jeweiligen Inhalt fuhrt.¨ Da das internationale Netz je- doch neben seiner Gr¨oße zus¨atzlich sehr dynamisch ist, Webseiten und Inhalte also st¨andig aktualisiert, entfernt oder hinzugefugt¨ werden, ist eine manuelle Fuhrung¨ eines Internetverzeichnisses unm¨oglich. Diese Aufgabe ubernehmen¨ Suchmaschinen mit ihren Bot-Programmen, sogenann- ten Crawlern, welche die Technologie Webcrawling im Verbund mit Webscraping nutzen, um gezielt und automatisiert Daten aus dem Internet zu sammeln und zu indexieren. Diese Thesis besch¨aftigt sich zun¨achst mit den Grundlagen und der Funktionsweise dieser Crawler. Die Nutzung von Webcrawlern ist jedoch nicht nur den großen Suchmaschinenan- bietern vorbehalten, sondern steht auch dem einfachen Nutzer offen. Dieser kann mit Hilfe einer Vielzahl an Frameworks und Funktionsbibliotheken ebenfalls Web- crawler zur Informationsrecherche, Datensammlung oder Indexierung erstellen und betreiben. Ab Kapitel4 befasst sich diese Arbeit zun ¨achst mit einem Bewertungsschema zur Benotung einer Auswahl von Crawling-Werkzeugen. Anschließend stellt sie diese gegenuber¨ und skizziert danach die internen Abl¨aufe der drei Bestbenoteten. Im Anschluss werden in Kapitel7 diese drei Crawling-Werkzeuge hinsichtlich ihrer Ergebnisse in verschiedenen Konfigurationen getestet. Hierbei soll gekl¨art werden welches dieser Werkzeuge am effektivsten und zuverl¨assigsten arbeitet. Außerdem soll in diesem Zuge ein Programm geschrieben werden, mit dessen Hilfe zukunftig¨ Studierende an der Hochschule Wismar im Fach Informationsrecherche“ selbst ein- ” fache Crawler