Abrufen von Informationen mit Web-Scraping von mehreren Bildschirm-Webseiten

8

Ich versuche, Informationen über Unternehmen aus dem Internet zu erhalten. Die meisten Informationen befinden sich auf dieser Seite: Ссылка , die Seite sieht folgendermaßen aus:

Auf dieser Seite muss ich auf den Reiter Busqueda de Companias klicken und dann beginnt die interessante Seite. Wenn ich klicke, erhalte ich den nächsten Bildschirm: Auf dieser Seite muss ich die Option Nombre setzen und dann eine Zeichenfolge mit einem Namen einfügen. Zum Beispiel werde ich die Zeichenfolge PROAÑO & ASOCIADOS CIA. LTDA. hinzufügen und ich werde den nächsten Bildschirm bekommen:

Dann muss ich auf Buscar klicken und es wird der nächste Bildschirm angezeigt:

In diesem Bildschirm habe ich die Informationen für dieses Unternehmen. Dann muss ich auf den Reiter Informacion Estados Financieros klicken und den nächsten Bildschirm bekommen:

In diesem letzten Bildschirm muss ich auf den Reiter Estado Situacion klicken und ich werde die Informationen vom Unternehmen in den Spalten Codigo de la cuenta contable , Nombre de la cuenta contable und Valor erhalten. Ich möchte diese Informationen in einem Datenrahmen gespeichert bekommen. Der größte Teil der komplexen Seite, die ich gefunden habe, begann, als ich das Element Nombre setzen, eine Zeichenfolge einfügen, Buscar eingeben und auf die Registerkarte Informacion Estados Financieros klicken musste. Ich habe versucht, html_session und html_form von rvest package zu verwenden, aber die Elemente sind leer.

Könnten Sie mir bei einigen Schritten helfen, dieses Problem zu lösen?

    
Duck 03.05.2016, 11:40
quelle

2 Antworten

5

RSelenium Coded Beispiel

Hier ist ein eigenständiges Codebeispiel, das die Website verwendet, auf die in der Frage verwiesen wird.

Beobachtung: Bitte führen Sie diesen Code nicht aus.

  
    

Warum? Wenn 1K-Stack-Benutzer auf die Website gelangen, ist dies ein DDOS-Angriff.

  

Einführung Voraussetzungen

Der folgende Code wird RSelenium installieren, bevor Sie den Code ausführen, den Sie benötigen:

  1. Installieren Sie Firefox
  2. Fügen Sie das Selenium IDE Plugin hinzu
  3. Installieren Sie RStudio [ Empfehlung ]
  4. Erstellen Sie ein Projekt und öffnen Sie die Codedatei unter

Der folgende Code führt Sie von der zweiten Seite [ Ссылка bis zur letzten Seite wo die Information, die Sie interessiert, ist ...

Nützliche Referenzen:

Wenn Sie an RSelenium interessiert sind, empfehle ich Ihnen dringend, die folgenden Referenzen zu lesen, danke an John Harrison für die Entwicklung des RSelenium-Pakets.

  

Codebeispiel

%Vor%

wir sind jetzt auf der Zielseite [Siehe Bild]

Extrahieren der Tabellenwerte ...

Der nächste Schritt besteht darin, die Tabellenwerte zu extrahieren. Um dies zu tun, ziehen wir die .z-listitem css-selector -Daten. Jetzt können wir überprüfen, ob wir die Datenzeilen sehen. Wir tun dies, so dass wir nun die zurückgegebenen Werte extrahieren und entweder eine Liste oder ein Dataframe auffüllen können.

%Vor%

hier ist das Ergebnis:

%Vor%

Umgang mit versteckten Daten.

Der Selenium WebDriver und somit RSelenium interagieren nur mit sichtbaren Elementen einer Webseite. Wenn wir versuchen, die gesamte Tabelle zu lesen, geben wir nur Tabellenelemente zurück, die sichtbar (eingeblendet) sind.

Wir können dieses Problem lösen, indem wir zum Ende der Tabelle scrollen. Wir zwingen die Tabelle aufgrund der Scroll-Aktion zu füllen. Wir können dann die komplette Tabelle extrahieren.

%Vor%

Was der Code macht.

Das obige Codebeispiel soll in sich abgeschlossen sein. Damit meine ich, dass es alles installieren sollte, was Sie benötigen, einschließlich der benötigten Pakete. Sobald die abhängigen R-Pakete installiert sind, ruft der R-Code checkForServer() auf, wenn Selenium nicht installiert ist, wird der Aufruf es installieren. Dies kann einige Zeit dauern

Meine Empfehlung ist, dass Sie durch den Code gehen, da ich keine Verzögerungen eingebaut habe (in der Produktion, die Sie gerne hätten), beachten Sie auch, dass ich nicht für Geschwindigkeit optimiert habe, sondern für ein Minimum an Klarheit [aus meiner Sicht] ...

Es wurde gezeigt, dass der Code funktioniert:

  • Mac OS X 10.11.5
  • RStudio 0.99.893
  • R version 3.2.4 (2016-03-10) - "Very Secure Dishes"

    
Technophobe01 08.05.2016, 21:57
quelle
2

Sehen Sie sich RSelenium

an
  • Installieren Sie zunächst RSelenium und verwenden Sie die oben verlinkte Vignette, um sich mit den Grundlagen vertraut zu machen.

  • Sehen Sie sich dann dieses Webinar zur Verwendung von RSelenium an, das einige detaillierte Scraping-Schritte Schritt für Schritt durchläuft und leicht zu befolgen ist: Ссылка

vijucat 05.05.2016 14:58
quelle

Tags und Links