2009-04-05 3 views
1

Ich erstelle eine Bookmarklet-Schaltfläche, die, wenn der Benutzer auf diese Schaltfläche in seinem Browser klickt, die aktuelle Seite abkratzt und einige Werte von dieser Seite abruft, z. B. Preis, Artikelname und Artikelbild.Wie scrape Websites, Client-Seite oder Server-Seite?

Diese Felder werden variabel sein, bedeutet, dass die Logik zum Abrufen dieser Werte für jede Domäne "Amazon, Ebay" unterschiedlich sein wird.

Meine Fragen sind:

  • Sollte ich Javascript verwenden, um diese Daten zu kratzen dann an den Server senden?
  • Oder einfach an meine Server-Seite die URL senden dann verwenden. NET-Code, um Werte zu kratzen?
  • Was ist der beste Weg? und warum ist es besser? Vorteile Nachteile?

Schauen Sie sich das Video und Sie werden verstehen, was ich genau http://www.vimeo.com/1626505

+0

Amr - vielen Dank für die Auswahl meiner Antwort. –

Antwort

2

tun möchten, wenn Sie zum Beispiel Informationen von einem anderen Standort für den Einsatz in Ihre Website (geschrieben in ASP.NET, ziehen wollen) dann tun Sie das normalerweise auf der Serverseite, damit Sie reiche Sprache für die Verarbeitung der Ergebnisse haben (zB C#). Sie tun dies über ein WebRequest-Objekt in .NET.

Die primäre Verwendung der clientseitigen Verarbeitung besteht in der Verwendung von JavaScript zum Abrufen von Informationen, die auf Ihrer Website angezeigt werden. Ein Beispiel wären die vom Weather Channel bereitgestellten Skripts, um eine kleine Wetterbox auf Ihrer Website anzuzeigen, oder einfache Aktionen wie das Hinzufügen einer Seite zu Favoriten.

UPDATE: Amr schreibt, dass er versucht, die Funktionalität einiger populären Screen Scraping-Software neu zu erstellen, die einige ziemlich anspruchsvolle Verarbeitung erfordern würde. Amr, würde ich in Betracht ziehen, eine Anwendung zu erstellen, die das IE-Browser-Objekt verwendet, um Webseiten anzuzeigen - es ist ziemlich einfach. Sie könnten dann einfach InnerHTML ziehen (ich denke, es ist ein paar Jahre her, dass ich ein IE-Objekt-basiertes Programm implementiert habe), um den Inhalt der Seite zu erhalten und Ihre Magie zu tun. Sie könnten natürlich ein WebRequest-Objekt verwenden (indem Sie ihm einfach die URL übergeben, die im Browser-Objekt verwendet wird), aber das wäre nicht sehr effizient, da es die Seite ein zweites Mal herunterladen würde.

Sind Sie danach?

+0

Ich denke, es ist nicht Phishing, http://en.wikipedia.org/wiki/Web-scraping_software_comparison –

+0

Es ist ein Bookmarklet, das kann leicht getan werden, kann es in den falschen Händen gefährlich sein. Aber schau dir Magnolia für eine tolle Bookmarklet App an. –

+0

Danke Robert. Ich bin nicht vertraut mit Bookmarklets oder Magnolia. Ich werde das überprüfen. –

0

Ich würde es auf der Server-Seite kratzen, weil (ich bin Java-Typ) Ich mag statische Sprachen mehr als dynamische Skriptsprachen, so dass die Logik im Backend wäre für mich komfortabler. Auf der anderen Seite hängt davon ab, wie viele Elemente Sie scrape und wie komplex die Logik dafür wäre. Vielleicht sind die Werte mit einem einzelnen ID-Selektor in JavaScript analysierbar, dann könnte die serverseitige Verarbeitung übertrieben sein.

0

Bookmarklets sind clientseitig per Definition, aber Sie könnten den Client von einem Server abhängig machen, aber Ihr Beispiel liefert nicht genügend Informationen. Was möchten Sie mit den Scraped-Infos machen?

1

Wenn Sie nur JavaScript verwenden möchten, haben Sie wahrscheinlich ein ziemlich großes Bookmarklet, es sei denn, Sie kennen das genaue Layout jeder Site, auf der es verwendet wird (und selbst dann wird es groß).

Eine gängige Methode, die ich gesehen habe, ist die Verwendung eines Webdienstes auf Ihrem eigenen Server, den Ihr Bookmarklet (das JavaScript verwendet) mit einigen Parametern wie der URL der angezeigten Seite weiterleitet.Ihr Server würde dann die Seite abkratzen und die Arbeit tun, den HTML für die Dinge zu analysieren, die Sie interessieren.

Ein gutes Beispiel ist das "Import to Mendeley" Bookmarklet, das die URL der Seite, die Sie besuchen, an seinen Server wo es geht extrahiert dann Informationen über die auf der Seite aufgelisteten wissenschaftlichen Dokumente und importiert sie in Ihre Sammlung.

0

Wenn Sie den Scrapping-Code in das Bookmarlet aufnehmen, müssen Ihre Benutzer ihr Lesezeichen aktualisieren, wenn Sie neue Funktionen oder Bugfixes hinzufügen. Tun Sie es Server-Seite und alle Ihre Benutzer bekommen die neuen Sachen sofort :)

Verwandte Themen