8

Ich möchte eine Website mit Greasemonkey crawlen und frage mich, ob es eine bessere Möglichkeit gibt, Werte vorübergehend zu speichern als mit GM_setValue.Beste Methode zum Speichern von Daten für Greasemonkey-basierte Crawler?

Ich möchte meine Kontakte in einem sozialen Netzwerk crawlen und die Twitter-URLs von ihren Profilseiten extrahieren.

Mein aktueller Plan ist, jedes Profil in seinem eigenen Tab zu öffnen, so dass es eher wie eine normale Browsing-Person aussieht (dh css, Scrits und Bilder werden vom Browser geladen). Speichern Sie dann die Twitter-URL mit GM_setValue. Nachdem alle Profilseiten gecrawlt wurden, erstellen Sie eine Seite mit den gespeicherten Werten.

Ich bin nicht so glücklich mit der Speicheroption, obwohl. Vielleicht gibt es einen besseren Weg?

Ich habe überlegt, die Benutzerprofile in die aktuelle Seite einzufügen, damit ich sie alle mit der gleichen Skriptinstanz verarbeiten kann, aber ich bin nicht sicher, ob XMLHttpRequest von normalen vom Benutzer initiierten Anfragen nicht zu unterscheiden ist.

Antwort

4

Ich hatte ein ähnliches Projekt, wo ich eine Menge (Rechnungsliniendaten) von einer Website erhalten und in eine Buchhaltungsdatenbank exportieren musste.

Sie könnten ein ASPX-Backend (oder PHP usw.) erstellen, das POST-Daten verarbeitet und in einer Datenbank speichert.

Alle Daten, die Sie von einer einzelnen Seite erhalten möchten, können in einem Formular gespeichert werden (falls gewünscht mit Stileigenschaften ausgeblendet), wobei Feldnamen oder IDs zur Identifizierung der Daten verwendet werden. Dann müssen Sie die Formularaktion nur als ASPX-Seite ausführen und das Formular mit Javascript senden.

(Alternativ können Sie eine Absenden-Schaltfläche auf der Seite hinzufügen, mit der Sie die Formularwerte überprüfen können, bevor Sie sie an die Datenbank senden).

1

Haben Sie Google Gears in Betracht gezogen? Das würde Ihnen Zugriff auf eine lokale SQLite-Datenbank geben, in der Sie große Mengen an Informationen speichern können.

2

Ich denke, Sie sollten sich zuerst fragen, warum Sie Greasemonkey für Ihr spezielles Problem verwenden möchten. Greasemonkey wurde entwickelt, um das Surf-Erlebnis zu verändern - nicht als Webspider. Während Sie vielleicht Greasemonkey dazu bringen können, das mit GM_setValue zu tun, denke ich, dass Sie Ihre Lösung finden werden, um kludgy und schwer zu entwickeln. Das erfordert viele manuelle Schritte (wie das Öffnen aller dieser Registerkarten, das Löschen der Greasemonkey-Variablen zwischen den einzelnen Läufen Ihres Skripts usw.).

Benötigt alles, was Sie tun, das JavaScript auf der Seite ausgeführt werden? Wenn ja, sollten Sie Perl und WWW::Mechanize::Plugin::JavaScript verwenden. Ansonsten würde ich empfehlen, dass Sie all dies in einem einfachen Python-Skript tun. Sie sollten sich das Modul urllib2 ansehen. Um zum Beispiel einen Blick auf den folgenden Code nehmen (beachten Sie, dass es cookielib verwendet Cookies zu unterstützen, die Sie wahrscheinlich benötigen, wenn Ihr Skript erfordert, dass Sie in eine Website angemeldet sein):

import urllib2 
import cookielib 
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookielib.CookieJar())) 
response = opener.open("http://twitter.com/someguy") 
responseText = response.read() 

Dann können Sie tun die gesamte Verarbeitung, die Sie mit regulären Ausdrücken verwenden möchten.

+0

Der Grund für Greasemonkey ist, dass die Seite, die gecrawlt werden soll, Robotern nicht wirklich zusagt. Greasemonkey schien der einfachste Weg zu sein, um den Crawler legitim erscheinen zu lassen. –

1

Der Grund für Grease wollen ist, dass die Seite gecrawlt werden tut nicht wirklich von Robotern genehmigen. Greasemonkey schien wie der einfachste Weg, um den Crawler aussehen zu lassen legitimiert.

Wenn Sie Ihren Crawler tatsächlich über den Browser manipulieren, ist das nicht legitimer. Sie brechen immer noch die Nutzungsbedingungen der Website! WWW :: Mechanize ist zum Beispiel genauso gut geeignet, um Ihre User Agent String zu "verfälschen", aber das und Crawling ist, wenn die Site keine Crawler erlaubt, illegal!

0

Der Grund für Greasemonkey ist, dass die Seite, die gecrawlt werden soll, Roboter nicht wirklich gut findet. Greasemonkey schien der einfachste Weg zu sein, um den Crawler legitim erscheinen zu lassen.

Ich denke, dies ist der schwierigste Weg, einen Crawler legitim aussehen zu lassen. Das Spoofen eines Webbrowsers ist mit einfachen Grundkenntnissen von HTTP-Headern einfach zu bewerkstelligen.

Außerdem haben einige Websites Heuristiken, die nach Clients suchen, die sich wie Spider verhalten. Wenn also Anfragen einfach so aussehen, wie Browser, bedeutet das nicht, dass Sie nicht wissen, was Sie tun.

+0

Ich glaube nicht, dass das Setzen der richtigen Header ausreichend ist. Sie müssen auch Bilder laden, AJAX-Anfragen auslösen und was nicht. –