2009-08-14 2 views
3

Screen Scraping scheint wie ein nützliches Werkzeug - Sie können auf fremde Website gehen und ihre Daten stehlen - wie wunderbar!Suchen Sie nach einem Beispiel, wenn Screen Scraping lohnend sein könnte

Aber ich habe eine harte Zeit mit, wie nützlich das sein könnte.

Die meisten Anwendungsdaten sind ziemlich spezifisch für diese Anwendung sogar im Internet. Nehmen wir zum Beispiel an, ich kratze alle Fragen und Antworten von StackOverflow oder alle Ergebnisse von Google (vorausgesetzt, dies war möglich) - ich bin mit Daten, die nicht sehr nützlich ist, es sei denn, ich habe entweder eine konkurrierende Frage und Antwort-Website (in diesem Fall sind die gestohlenen Daten sofort offensichtlich) oder eine konkurrierende Suchmaschine (in diesem Fall, es sei denn, ich habe einen eigenen Algorithmus, werden meine Daten ziemlich schnell veraltet sein).

Also meine Frage ist, unter welchen Umständen könnten die Daten aus einer App für eine externe App nützlich sein? Ich suche nach einem praktischen Beispiel, um den Punkt zu verdeutlichen.

+0

Jemandes Daten zu stehlen heißt "Jemandes Daten stehlen". Screen Scraping ist eine Anwendung, die Daten aus einer anderen Anwendung liest, wie es ein Benutzer tun würde, da dies die beste Option für die Automatisierung/Integration ist. Es ist keine unübliche Wahl, wenn Sie mit älteren "großen Eisen" -System-Terminalprogrammen arbeiten, die nicht mehr sicher geändert werden können. . – StingyJack

Antwort

3

Ein gutes Beispiel ist StackOverflow - keine Notwendigkeit, Daten als they've released it unter einer CC-Lizenz zu kratzen. Die Community arbeitet bereits an Statistiken und erstellt interessante Grafiken.

Es gibt eine ganze Reihe beliebter Mashup-Beispiele auf ProgrammableWeb. Sie können sich sogar mit anderen Mashupern (O_o) bei Veranstaltungen wie BarCamps und Hack Days treffen (Schlafsack mitnehmen). Werfen Sie einen Blick auf die Fülle der verfügbaren Informationen von Yahoo APIs (insbesondere Pipes) und sehen Sie, was Entwickler damit machen.

Nicht stehlen und neu veröffentlichen, etwas noch besser mit den Daten bauen - neue Wege zu verstehen, suchen oder erkunden. Ziehe immer deine Datenquellen an und danke denen, die dir geholfen haben. Verwenden Sie es, um eine neue Sprache zu lernen oder Daten zu verstehen oder fördern Sie die semantic web. Denken Sie daran, es ist zum Spaß nicht Profit!

Hoffnung, das hilft :)

5

Es ist nützlich, wenn eine Site öffentlich Daten bereitstellt, die (noch) nicht als XML-Service verfügbar sind. Ich hatte einen Kunden, der Scraping nutzte, um Flugdaten in eine Intranet-Anwendung seines Unternehmens zu übertragen.

Die Technik wird auch für die Forschung verwendet. Ich hatte einen Kunden, der den Inhalt mehrerer Online-Wörterbücher nach Wortart vergleichen wollte, und alle diese Seiten mussten gekratzt werden.

Es ist nicht eine Technik zum "Stehlen" von Daten. Alle üblichen Nutzungsbeschränkungen gelten. Viele Sites implementieren CAPTCHA-Mechanismen, um Scraping zu verhindern, und es ist unangemessen, diese zu umgehen.

+0

Warum benötigen Sie * Flugdaten in Ihrer Anwendung? Warum nicht einfach auf die Seite verlinken, die diese Informationen bereits enthält? – 010

+1

@ 010 Viele Gründe ... Zum Beispiel kann die Website mit Informationen zur Flugverfolgung über überflüssige Daten verfügen, die für Ihre Anwendung nicht kritisch sind, oder sie werden möglicherweise in einem Format angezeigt, das für Ihre beabsichtigte Verwendung nicht geeignet ist benutze es. Ganz zu schweigen davon, dass es für Ihre Benutzer problematisch ist, woanders hinzugehen, wenn die Daten * direkt in Ihre Anwendung eingebettet werden können. – Donut

+0

@ dgritsko - Guter Punkt. Vielen Dank. – 010

2

Wenn die Site über Daten verfügt, die von einer API profitieren würden (und es wäre kostenlos und legal), aber sie haben sie noch nicht implementiert, ist screen scraping eine Möglichkeit, diese zu erstellen Funktionalität für dich selbst.
Praktisches Beispiel - Mit Screen Scraping können Sie eine Art Mashup erstellen, das Informationen aus der gesamten SO-Familie von Websites kombiniert, da derzeit keine API vorhanden ist.

+0

Nicht so praktisch, da Ihre Vervielfältigung sofort offensichtlich wäre. – 010

+1

Der Punkt sollte nicht darin bestehen, den ursprünglichen Zweck des Erstellers des Inhalts zu untergraben, sondern die Art und Weise, wie die Daten verwendet werden, zu erweitern, um sie noch nützlicher zu machen. Die Geschichte von Harpo zum Vergleich von Online-Wörterbüchern ist ein gutes Beispiel für diesen Punkt. – Donut

+0

@ dgritsko - Ja, das ist eine gute Art, es zu sagen. Vielen Dank. – 010

1

Ein Beispiel aus meiner Erfahrung.

Ich brauchte eine Liste der wichtigsten Städte auf der ganzen Welt mit ihrer Breite und Länge für eine iPhone App, die ich gerade baute. Die App würde diese Daten zusammen mit der Geolocation-Funktion auf dem iPhone verwenden, um zu zeigen, in welcher Großstadt sich jeder Nutzer der App am nächsten befand (um den genauen Standort nicht anzuzeigen) und sie auf einem 3D-Globus der Erde plotten.

Ich konnte keine passende Liste im XML/Excel/CSV-Format überall leicht finden, aber ich fand this wikipedia page mit (ungefähr) die Informationen, die ich brauchte. Also schrieb ich ein schnelles Skript auf, um diese Seite zu scrappen und die Daten in eine Datenbank zu laden.

+0

Gutes Beispiel. Ich nehme an, Sie könnten dies auch auf andere Weise tun, indem Sie beispielsweise die Webseite lokal kopieren und einen Text-Editor und einige reguläre Ausdrücke verwenden, um die Daten zu entfernen. Aber vielleicht hatten Sie in diesem Fall festgestellt, dass Scraping das schnellste Werkzeug ist, um die Arbeit zu erledigen oder das einfachste Werkzeug, das Sie verwenden können? – 010

+0

@ 010 - Ich hätte wahrscheinlich einen Texteditor und Regexes dazu verwenden können, aber das Schöne beim Schreiben eines Screen Scrapers ist, dass wenn ich auf diese Seite gehe und weitere Städte zur Liste hinzufüge (das ist offensichtlich ziemlich unvollständig) Führen Sie den Schaber einfach erneut aus, um die neuen aufzunehmen. –

+0

Oh, richtig. Das ist ein guter Punkt. Vielen Dank. – 010

2

Nun, um Daten von einem Mainframe zu sammeln. Das ist ein Grund, warum manche Leute Screen Scraping benutzen. Mainframes sind immer noch in der Finanzwelt im Einsatz und oft läuft Software, die im vorigen Jahrhundert geschrieben wurde. Die Leute, die es geschrieben haben, sind vielleicht bereits im Ruhestand und da diese Software für diese Organisationen sehr kritisch ist, hassen sie es wirklich, wenn neuer Code hinzugefügt werden muss. Screenscraping bietet daher eine einfache Schnittstelle zur Kommunikation mit dem Mainframe, um Informationen vom Mainframe zu sammeln und sie dann an jeden Prozess weiterzuleiten, der diese Informationen benötigt. Überschreiben Sie die Mainframe-Anwendung, sagen Sie? Nun, Software auf Mainframes kann sehr alt sein. Ich habe Software auf Mainframes gesehen, die über 30 Jahre alt war und in COBOL geschrieben wurde.Oft funktionieren diese Anwendungen gut und Unternehmen möchten nicht das Umschreiben von Teilen riskieren, weil es Code beschädigen könnte, der seit über 30 Jahren funktioniert hat! Repariere die Dinge nicht, wenn sie nicht kaputt sind, bitte. Natürlich könnte zusätzlicher Code geschrieben werden, aber es dauert lange, bis der Mainframe-Code in einer Produktionsumgebung verwendet wird. Und erfahrene Mainframe-Entwickler sind schwer zu finden.

Ich selbst musste Screen Scraping auch in einem Software-Projekt verwenden. Dies war eine Scheduling-Anwendung, die die Ausgabe jedes untergeordneten Prozesses, der gestartet wurde, auf der Konsole erfassen musste. Es ist die einfachste Form des Screen Scraping, und viele Leute merken nicht einmal, dass wenn man die Ausgabe einer Anwendung auf die Eingabe einer anderen umleitet, es immer noch eine Art Bildschirm-Scraping ist. :)

Grundsätzlich screen scraping ermöglicht es Ihnen, eine (Web-) Anwendung mit einer anderen zu verbinden. Es ist oft eine schnelle Lösung, wenn andere Lösungen zu viel Zeit kosten. Jeder hasst es, aber die Zeit, die es spart, macht es immer noch sehr effizient.

2

Für ein Projekt haben wir einen (billigen) kommerziellen Anbieter gefunden, der Übersetzungsdienste für ein bestimmtes Dateiformat anbietet. Der Anbieter bot keine API an (es war schließlich ein billiger Anbieter) und hatte stattdessen ein Webformular zum Hochladen und Herunterladen von.

Mit Hunderten von Dateien pro Tag war die einzige Möglichkeit, dies zu tun, WWW::Mechanize in Perl, scrape den Weg durch die Anmelde-und Upload-Boxen, reichen Sie die Datei, und speichern Sie die zurückgegebene Datei. Es ist hässlich und definitiv zerbrechlich (wenn der Verkäufer die Website im geringsten ändert, könnte es die App kaputt machen), aber es funktioniert. Es funktioniert jetzt seit über einem Jahr.

+0

Ich hätte nicht einmal daran gedacht, eine Formularübergabe zu simulieren, um die Ausgabe zu lesen. Ich bin nicht vertraut mit Mechanisieren, aber ich nehme an, es bedeutete, dass das Durchlaufen des Formulars nicht so kompliziert war, wie Sie annehmen würden. – 010

+1

Die größte Hürde war, über einen JavaScript-Bump zu kommen, aber sobald das erledigt war ging es nahtlos nahtlos –

1

Jederzeit brauchen Sie einen Computer, um die Daten auf einer Website zu lesen. Screen Scraping ist in genau den Fällen nützlich, in denen eine Website-API nützlich ist. Einige Websites verfügen jedoch nicht über die Ressourcen, um selbst eine API zu erstellen. Screen Scraping ist der Weg des Entwicklers.

Zum Beispiel in den früheren Tagen von Stack Overflow, baute jemand ein Werkzeug, um Änderungen an Ihrem Ruf im Laufe der Zeit zu verfolgen, bevor Stack Overflow selbst diese Funktion zur Verfügung gestellt. Der einzige Weg dies zu tun, da Stack Overflow keine API hat, war Scrape zu screenen.

2

Angenommen, Sie wollten Ergebnisse von einer beliebten Sportwebsite abrufen, die die verfügbaren Informationen nicht mit einem XML-Feed oder einer API bereitgestellt hat.

1

Offensichtliche Fall ist, wenn ein Webservice nicht Rückwärtssuche bietet. Sie können diese umgekehrte Suche über denselben Datensatz implementieren, aber Sie müssen das gesamte Dataset scrapen.

Dies kann eine faire Verwendung sein, wenn die Rückwärtssuche auch eine signifikante Vorverarbeitung erfordert, z. weil Sie partielles Matching unterstützen müssen. Die Datenquelle verfügt möglicherweise nicht über die technischen Fähigkeiten oder Computerressourcen, um die umgekehrte Suchoption bereitzustellen.

+0

Reverse-Suche - meinst du wie eine Reverse-Telefonnummer Lookup-Service, wo Sie die Telefonnummer haben, aber Sie haben nicht den Namen? Scheint wie eine atypische Anforderung, nicht? – 010

+0

Nun, das ist ein klarer Fall der Rückwärtssuche, aber eines, bei dem die Rückwärtssuche technisch nicht schwierig ist. Es ist generell eine rechtliche/regulatorische Angelegenheit, ob das erlaubt ist (aus eigener Erfahrung). Ein härteres Beispiel wäre, bei einem Zahlenbereich xyz0000-xyz9999 die Einträge zu finden, die das Wort "fax" enthalten. – MSalters

0

Ich benutze Screen Scraping täglich, ich betreibe einige E-Commerce-Sites und screen-scraping Skripte laufen täglich um Produktlisten automatisch von meinen Lieferanten Großhandel Websites zu sammeln. Dies ermöglicht mir, aktuelle Informationen über alle Produkte, die mir von verschiedenen Lieferanten zur Verfügung stehen, zu haben und erlaubt mir, unwirtschaftliche Margen aufgrund von Preisänderungen zu kennzeichnen.

Verwandte Themen