Frage

Ich versuche, die Datenextraktion von einer Website zu automatisieren und ich weiß nicht, wo wirklich zu starten. Einer unserer Lieferanten gibt uns Zugang zu einigen Anlagen Protokolldaten durch eine „ Business Objects 11 “ Online-Bewerbung. Wenn Sie nicht vertraut mit diesem Online-App sind, denken Sie an sie als Web-basierten Report-Generator. Das Problem ist, dass ich eine Menge Ausrüstung zu überwachen versuchen und diese Anbieter erstellt nur eine Anfrage ein Protokoll zu einem Zeitpunkt, zu extrahieren. Diese Aufforderung hat die Gerätenummer, das Startdatum und das Enddatum ... Erschwerend kommt hinzu, können wir nur da de „csv“ auf den binären Excel-Format exportieren Export ist pleite und sie sich weigern, es zu beheben ... damit wir begrenzt sind um 65 536 Reihe Beschränkung des Excel ... (das beläuft sich auf 3-4 Tage der Datenaufzeichnung in meinem Fall). Ich kann kein neues resquest schaffen, da nur der Lieferant die erforderlichen Administratorrechte hat.

Was denken Sie viele Anfragen laufen (etwa 800) über einen Web-GUI die eleganteste Art und Weise sein würde? Ich glaube, ich könnte Maus Positionen codieren, klicken Sie auf Ereignisse und Tastenanschläge mit Verzögerungen und alles ... Aber es muss einen besseren Weg sein.

las ich über AutoHotKey und AutoIt scripting, aber sie scheinen als zu beschränkt sein, was sie auf dem Netz zu tun. Auch ... Ich bin mit IE6 stecken ... Aber wenn Sie einen Weg kennen, die einen anderen Browser beinhaltet, ich bin immer noch sehr interessiert in Ihrer Antwort.

(einmal habe ich die Log-Dateien lokal, das Extrahieren von Daten ist nicht ein Problem)

War es hilfreich?

Lösung

Es gibt einige Dinge, die Sie versuchen könnten. Wenn die Website ist ein HTML und Berichte können durch einen einfachen POST angefordert werden oder GET dann urlib / urlib2 und cookielib Python Module genug sein, um sollte ein Excel-Dokument zu holen.

Dann können Sie diese versuchen: xlrd zu extrahieren Daten aus Excel.

Werfen Sie auch einen Blick auf: http://pamie.sourceforge.net /. Ich versuchte, es mir nie, aber sieht vielversprechend aus und einfach zu bedienen.

Andere Tipps

Normalerweise würde ich vorschlagen, nicht IE zu verwenden (oder einen beliebigen Browser) überhaupt. Denken Sie daran, Web-Browser-Software sind nur Proxy-Programme für Anfragen http machen und die Ergebnisse auf sinnvolle Weise darzustellen. Es gibt andere Möglichkeiten können Sie ähnliche HTTP-Anfragen stellen und die Antworten zu verarbeiten. Fast jede moderne Sprache hat diese irgendwo hinein API gebaut. Dies wird als Screen Scraping oder Web-Scraping.

Aber diesen Vorschlag zu vervollständigen Ich brauche mehr über Ihre Programmierumgebung wissen: das heißt, in welcher Programmiersprache tun Sie dieses Skript Envision Schreiben

Ein typisches Beispiel C #, wo man nur das HTML-Ergebnis wie String würde wie folgt aussehen:

new System.Net.WebClient().DownloadString("http://example.com");

Sie analysieren dann die Zeichenfolge alle Felder zu finden, die Sie benötigen und eine weitere Anfrage senden. Die WebClient-Klasse hat auch eine .DownloadFile() Methode, die Sie nützlich für das Abrufen der Excel-Dateien finden könnten.

Da Sie .NET verwenden können, sollten Sie die Verwendung prüfen, die Windows Forms-WebBrowser-Steuerelement. Sie können sie automatisieren auf die Website, drücken Sie die Tasten usw. zu navigieren Sobald der Bericht Seite geladen ist, können Sie Code verwenden, können den HTML-DOM zu navigieren, um die gewünschten Daten zu finden -. Keine regulären Ausdrücke beteiligt

Ich habe so etwas wie dies schon vor Jahren, Auktionsdaten von eBay zu extrahieren.

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