2016-07-14 15 views
0

Wie kann ich die EPS-Aktieninformationen von dieser Website über Google Tabellen abrufen? http://seekingalpha.com/symbol/KOimportXML xPath: Abrufen von Bestandsinformationen von der Website in Google Tabellen

Was ich zur Ausgabe in Google Sheets möchte ist dieser Wert:

1.66 

Auf der Seite, die ich, dass der entsprechende XML-Code glaube, dass Informationen zu ziehen daraus ist:

<span class="right" id="qp_eps">1.66</span> 

Diese Google Sheet-Formel gibt nur einen Fehler zurück:

=ImportXML("http://seekingalpha.com/symbol/KO/focus", "//span[@id='qp_eps'") 
+1

Sollte Ihr XPath nicht wie folgt aussehen: '// Spanne [@ id = 'qp_eps']/text()' auch was, wenn es tausende von 'span' Elemente mit attr ibutes 'id =" qp_eps "' – SomeDude

+0

Ich war vorher nicht mit xPath in Kontakt und habe im Grunde keine Ahnung davon. Ich habe Ihren Vorschlag ausprobiert, aber es wird auch nichts gefunden, leider – stefan

+0

Wissen Sie, ob es nur einen Bereich mit id = 'qp_eps' in diesem Link gibt? – SomeDude

Antwort

0

Das HTML/DOM, das Sie in den Browser-Entwicklertools sehen, ist nicht das ursprüngliche HTML, das vom Webserver empfangen wird. Es wurde dynamisch durch Javascript im Browser erweitert.

Sie können dies in einem Browser auf die importierte URL (http://seekingalpha.com/symbol/KO/focus) überprüfen und ein "Speichern" (nur HTML) durchführen. Untersuche dann die gespeicherte Datei. Es enthält kein Element mit id="qp_eps", oder?

Wenn Sie curl oder wget haben, können Sie diese stattdessen verwenden, um das ursprüngliche HTML vom Webserver abzurufen und zu überprüfen, was es enthält. Dies ist der HTML-Code, der ImportXML() enthält. Sie müssen also Ihren XPath mit diesem HTML-Code schreiben.

1

Ich habe eine Lösung für Sie:

Mit IMPORT statt ImportXML Sie Index, die seltsam verwenden können, auch bei unterschiedlichen Tickern, ganz konsequent ist:

Es gibt zwei Möglichkeiten, darüber zu gehen - Zunächst wird mit Index zweimal:

=INDEX(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),3) 

Und wenn Sie es reinigen wollen bis zu nur den Wert zurückgeben Sie ersetzen können „eps:“ -Teil:

=SUBSTITUTE(INDEX(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/KO"),,55)),3),"eps:","") 

Zweitens ist Index wieder zu verwenden, sondern stattdessen zweimal von Indexing, können Sie einfach die Werte verbinden und regex heraus, was Sie wollen:

=REGEXEXTRACT(CONCATENATE(SORT(INDEX(IMPORTDATA("http://seekingalpha.com/symbol/AAPL"),,55))),"eps:(.*)NOW_P") 

Hier sind zwei Screenshots der beiden Typen:

enter image description here

enter image description here

+0

Terrific Zeug, dass es für Sie funktioniert :). Ich habe ein Problem, da ich nur "NOW_P: -0.01" mit der SUBSTITUTE-Formel und ein "# N/A" mit der REGEXTRACT-Formel erhalte. Ich nehme an, es hat vielleicht etwas mit Formatierung zu tun? Abgesehen davon fragte ich mich, wofür die "55" und "3" stehen, da ich gerne mehr Informationen abrufen würde, z. "P/E" von dieser Seite mit dem gleichen Prinzip. Im Moment stecke ich jedoch fest, aber ich denke, das kann nur ein kleines Problem sein. Vielen Dank!!!! – stefan

+0

oh ja die 55 war ein Index, also, wenn Sie importdata alle von selbst Sie sehen eine Tonne von dem, was scheint, unstrukturierte Daten, aber der Grund, dass ich nicht nur alles in eine Zelle mampfen ist, dass es das Zeichen Grenze überschreitet - also für Beispiel, wenn Sie die Formel auf '= SORTIEREN (INDEX (IMPORTDATA (" http://seekingalpha.com/symbol/KO "), 55)) reduzieren, sehen Sie eine sortierte Liste der Spalte mit den Werten, die ich Ihnen glaube wollen –

+0

Die 3 dann nur noch enger - wenn Sie ein Blatt haben, aus denen Sie arbeiten, kann ich für eine Sekunde springen und Ihnen zeigen –