Frage

Ich höre die Leute diese Programme die ganze Zeit zu schreiben, und ich weiß, was sie tun, aber wie sie es wirklich tun? Ich suche nach allgemeinen Begriffen.

War es hilfreich?

Lösung

Technisch Screenscraping ist jedes Programm, das die Anzeigedaten von einem anderen Programm packt und ingests es für seinen eigenen Gebrauch.

Oft bezieht sie screenscaping auf einen Web-Client, der die HTML-Seiten von gezielter Website analysiert formatierten Daten zu extrahieren. Dies geschieht, wenn eine Website nicht einen RSS-Feed oder ein REST-API bieten, um die Daten in einer programmatischen Art und Weise zugegriffen wird.

Ein Beispiel für eine Bibliothek für diesen Zweck verwendet wird, ist Hpricot für Ruby, die eine der besser ist -architected HTML-Parser für Screen Scraping verwendet.

Andere Tipps

Viele präzise Antworten hier.

Was niemand gesagt wird, tut es nicht!

Screen Scraping ist, was Sie tun, wenn niemand Sie mit einem vernünftigen maschinenlesbaren Schnittstelle zur Verfügung gestellt wird. Es ist schwer zu schreiben, und spröde.

Als Beispiel betrachten sie ein RSS-Aggregator, dann Code betrachten, die durch die Arbeit durch eine normale menschliche orientierten Blog-Schnittstelle der gleichen Informationen erhält. Die man bricht, wenn die Blogger ihr Layout zu ändern entscheiden?

Natürlich, manchmal Sie haben keine andere Wahl: (

Im allgemeinen wird ein Bildschirm Schaber ist ein Programm, das durch Nachahmen der Aktionen einer Person Ausgabe von einem Server-Programm fängt vor dem Arbeitsplatz sitzt einen Browser oder Terminalprogramm. an bestimmten Schlüsselpunkten würde das Programm die Ausgabe interpretieren und dann eine Aktion oder bestimmte Mengen an Informationen aus der Ausgabe extrahieren.

Ursprünglich wurde diese mit Zeichen- / Terminal-Ausgaben von Mainframe erfolgt für Daten oder Aktualisierung von Systemen zu extrahieren, die archaischen oder nicht direkt zugänglich an den Endverbraucher waren. modern ausgedrückt bedeutet dies in der Regel die Ausgabe von einer HTTP-Anforderung Parsen Daten zu extrahieren oder eine andere Maßnahmen zu ergreifen. mit dem Aufkommen von Web-Service soll diese Art der Sache gestorben ist weg, aber nicht alle Apps bieten einen schönen api mit zu interagieren.

Ein Bildschirm Schaber lädt die HTML-Seite, und die Daten zieht interessiert entweder für bekannte Token suchen oder als XML oder so Parsen.

In den frühen Tagen des PCs, Screen-Scraper würde ein Endgerät (zum Beispiel IBM 3270) emulieren und so tun, als ein Benutzer, um zu sein, interaktiv zu extrahieren Informationen auf dem Mainframe zu aktualisieren. In jüngerer Zeit wird das Konzept auf jede Anwendung angewandt, die eine Schnittstelle, über Web-Seiten zur Verfügung stellt.

Mit Aufkommen von SOA ist Screenscraping eine bequeme Art und Weise, auf Dienste-Anwendungen ermöglichen, die es nicht sind. In diesen Fällen ist die Web-Seite Schaben der häufigere Ansatz.

Hier ist ein winzig bisschen Bildschirm in implementiert Schaben Javascript , mit jQuery (keine gemeinsame Wahl, wohlgemerkt, da Schaben ist in der Regel einer Client-Server-Aktivität):

//Show My SO Reputation Score
var repval = $('span.reputation-score:first'); alert('StackOverflow User "' + repval.prev().attr('href').split('/').pop() + '" has (' + repval.html() + ') Reputation Points.');

Wenn Sie führen Firebug , kopieren Sie den obigen Code und in die Konsole einfügen und in Aktion sehen hier auf dieser Seite Frage.

Wenn SO ändert die DOM-Struktur / Element Klassennamen / URI-Pfad Konventionen, sind alle Wetten ab, und es kann nicht mehr arbeiten - das ist das übliche Risiko in Bildschirm Bemühungen Schaben, wo es keinen Vertrag / Verständnis zwischen den Parteien (der Abstreifer und die scrapee [ ja ich erfunden nur ein Wort ]).

Technisch ist Screenscraping jedes Programm, das die Anzeigedaten von einem anderen Programm packt und ingests es für seine eigenen use.In die Frühzeit des PCs, Screen-Scraper einen Terminal emulieren würde (zB IBM 3270) und so tun, als ein Benutzer zu sein in bestellen interaktiv zu extrahieren, aktualisieren Informationen auf dem Mainframe. In jüngerer Zeit wird das Konzept auf jede Anwendung angewandt, die eine Schnittstelle, über Web-Seiten zur Verfügung stellt.

Mit Aufkommen von SOA ist Screenscraping eine bequeme Art und Weise, auf Dienste-Anwendungen ermöglichen, die es nicht sind. In diesen Fällen ist die Web-Seite Schaben der häufigere Ansatz.

Oft bezieht sie screenscaping auf einen Web-Client, der die HTML-Seiten von gezielter Website analysiert formatierten Daten zu extrahieren. Dies geschieht, wenn eine Website nicht einen RSS-Feed oder ein REST-API bieten, um die Daten in einer programmatischen Art und Weise zugegriffen wird.

Normalerweise Sie haben eine HTML-Seite, die einige Daten enthält, die Sie wollen. Was Sie tun, ist, dass Sie ein Programm schreiben, das diese Webseite holen wird und versuchen, diese Daten zu extrahieren. Dies kann mit XML-Parser getan werden, aber für einfache Anwendungen bevorzugen ich reguläre Ausdrücke verwenden, um eine bestimmte Stelle im HTML übereinstimmen und die erforderlichen Daten zu extrahieren. Manchmal kann es schwierig sein, einen guten regulären Ausdruck zu erstellen, obwohl, weil die umgebende HTML mehrmals im Dokument angezeigt wird. Sie wollen immer einen einzigartigen Artikel passen so nah wie möglich an die Daten, die Sie benötigen.

Screen Scraping ist, was Sie tun, wenn niemand Sie mit einem vernünftigen maschinenlesbaren Schnittstelle zur Verfügung gestellt wird. Es ist schwer zu schreiben, und spröde.

Als Beispiel betrachten sie ein RSS-Aggregator, dann Code betrachten, die durch die Arbeit durch eine normale menschliche orientierten Blog-Schnittstelle der gleichen Informationen erhält. Welche bricht, wenn der Blogger entscheidet ihr Layout zu ändern.

Ein Beispiel für eine Bibliothek für diesen Zweck verwendet wird, ist Hpricot für Ruby, die eine der besser architected HTML-Parser für Screen Scraping verwendet.

Sie haben eine HTML-Seite, die einige Daten enthält, die Sie wollen. Was Sie tun, ist, dass Sie ein Programm schreiben, das diese Webseite holen wird und versuchen, diese Daten zu extrahieren. Dies kann mit XML-Parser getan werden, aber für einfache Anwendungen bevorzugen ich reguläre Ausdrücke verwenden, um eine bestimmte Stelle im HTML übereinstimmen und die erforderlichen Daten zu extrahieren. Manchmal kann es schwierig sein, einen guten regulären Ausdruck zu erstellen, obwohl, weil die umgebende HTML mehrmals im Dokument angezeigt wird. Sie wollen immer einen einzigartigen Artikel passen so nah wie möglich an die Daten, die Sie benötigen.

  

Screen Scraping ist, was Sie tun, wenn niemand Sie mit einem vernünftigen maschinenlesbaren Schnittstelle zur Verfügung gestellt wird. Es ist schwer zu schreiben, und spröde.

Das stimmt nicht ganz. Ich glaube nicht, ich übertreibe, wenn ich sage, dass die meisten Entwickler nicht genug Erfahrung, um Abfahrten APIs zu schreiben. Ich habe mit Screen-Scraping-Unternehmen gearbeitet und oft auch die APIs sind so problematisch (im Bereich von kryptischen Fehlern zu schlechten Ergebnissen) und oft nicht die volle Funktionalität geben, dass die Website sieht vor, dass es zu Screen Scrape besser sein kann (Web schabt, wenn Sie werden). Die Extranet / Web-Portale sind meine mehr Kunden / Makler als API-Clients verwendet und sind somit besser unterstützt. In großen Unternehmen Änderungen an Extranet-Portale etc .. sind selten, in der Regel, weil es ursprünglich ausgelagert und jetzt seine nur beibehalten. Ich beziehe mich mehr Abkratzen zu screenen, wo die Ausgabe zugeschnitten ist, z.B. ein Flug auf bestimmten Strecke und Zeit, ein Versicherungs-Angebot, ein Versand Zitat etc ..

In Bezug auf, es zu tun, es kann so einfach sein wie Web-Client den Seiteninhalt in einen String zu ziehen und eine Reihe von regulären Ausdrücken, die Informationen zu extrahieren, die Sie wollen.

string pageContents = new WebClient("www.stackoverflow.com").DownloadString();
int numberOfPosts = // regex match

Offensichtlich in großem Maßstab Umgebung, die Sie als die oben robusten Code schreiben würden.

  

Ein Bildschirm Schaber lädt die html   Seite und zieht die Daten   Interesse entweder durch die Suche nach   bekannt Token oder als XML-Parsing oder   einige so.

Das ist sauberer Ansatz als regex ... in der Theorie .. aber in der Praxis ist es nicht ganz so einfach, da die meisten Dokumente in XHTML normalisieren benötigen, bevor Sie durch sie XPath können, am Ende fanden wir die Feinabstimmung reguläre Ausdrücke waren praktischer.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top