Beste Methode zum Speichern von Daten für Greasemonkey-basierte Crawler?

8

Ich möchte eine Website mit Greasemonkey crawlen und mich fragen, ob es eine bessere Möglichkeit gibt, Werte vorübergehend zu speichern als mit GM_setValue.

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

Mein aktueller Plan ist es, jedes Profil in seinem eigenen Tab zu öffnen, so dass es eher wie eine normale Person zum Durchsuchen 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 jedoch nicht so glücklich mit der Speicheroption. Vielleicht gibt es einen besseren Weg?

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

    
Björn 28.01.2009, 14:23
quelle

5 Antworten

4

Ich hatte ein ähnliches Projekt, bei dem ich eine ganze 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 nur die Formularaktion als ASPX-Seite ausführen und das Formular mit Javascript senden.

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

    
Sophia 02.02.2009, 06:03
quelle
2

Ich denke, du solltest dich zuerst fragen, warum du Greasemonkey für dein spezielles Problem verwenden willst. 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. Dies 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 Ausführen von JavaScript auf der Seite? Wenn ja, sollten Sie Perl und WWW :: Mechanize :: Plugin :: JavaScript . Ansonsten würde ich empfehlen, dass Sie all dies in einem einfachen Python-Skript tun. Sie werden sich das Modul urllib2 ansehen. Schauen Sie sich zum Beispiel den folgenden Code an (beachten Sie, dass er cookielib zur Unterstützung von Cookies verwendet, die Sie wahrscheinlich benötigen, wenn Ihr Skript erfordert, dass Sie bei einer Site angemeldet sind):

%Vor%

Dann können Sie alle gewünschten Verarbeitungen mit regulären Ausdrücken durchführen.

    
Sebastian Celis 13.02.2009 22:47
quelle
1

Haben Sie Google Gears in Betracht gezogen? Dadurch erhalten Sie Zugriff auf eine lokale SQLite-Datenbank, in der Sie große Mengen an Informationen speichern können.

    
Joel Carranza 10.02.2009 20:57
quelle
1
  

Der Grund, Greasemonkey zu wollen   ist, dass die zu krabbelnde Seite tut   Robotern nicht wirklich zustimmen.   Greasemonkey schien am einfachsten zu sein   Möglichkeit, den Crawler aussehen zu lassen   legitim.

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

    
Zen of Perl 16.05.2010 12:53
quelle
0
  

Der Grund dafür, Greasemonkey zu haben, ist, dass die zu crawelnde Seite 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, um einen Crawler legitim erscheinen zu lassen. Spoofing eines Webbrowsers ist mit einfachen Grundkenntnissen von HTTP-Headern trivial einfach.

Außerdem gibt es auf einigen 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.

    
mikerobi 16.05.2010 13:05
quelle