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?
Hier ist ein eigenständiges Codebeispiel, das die Website verwendet, auf die in der Frage verwiesen wird.
Warum? Wenn 1K-Stack-Benutzer auf die Website gelangen, ist dies ein DDOS-Angriff.
Der folgende Code wird RSelenium installieren, bevor Sie den Code ausführen, den Sie benötigen:
Der folgende Code führt Sie von der zweiten Seite [ Ссылка bis zur letzten Seite wo die Information, die Sie interessiert, ist ...
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.
wir sind jetzt auf der Zielseite [Siehe Bild]
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.
hier ist das Ergebnis:
%Vor%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% 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:
Sehen Sie sich RSelenium
anInstallieren 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: Ссылка