Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1656to1660
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

XML Pfad

XML Pfad
11.11.2018 16:04:14
Christoph
Hi,
ich versuche von einer Webseite über "importXML" via GoogleSheets Daten in Excel zu übertragen. Die Funktion dürfte identisch mit XMLfiltern sein.
Es handelt sich um folgende Seite: https://www.bloomberg.com/quote/ADS:GR
Für z.B. Unternehmensname funktioniert das bereits mit folgender Formel:
=index(IMPORTXML($B2;"//h1[@class='companyName__99a4824b']");1)
Mein Problem ist, wenn ich "About adidas AG" in der Mitte ziehen möchte.
Ich kann mit der folgenden Formel den ganzen Block ziehen, will aber eigentlich nur die einzelne Beschreibung.
=index(IMPORTXML($B2;"//div[@class='contentWell__b0c648c9']");19)
Über XpathHelper erhalte ich folgenden Pfad:
/html/body/div[@id='root']/div/div[@class='contentWell__b0c648c9']/section[@class='quotePageMainContent page-modules']/section[@class='companyProfile__1e6c0f88']/div/section[@class='left__3cc58f98 description__bff5f1e8']

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: XML Pfad
11.11.2018 20:03:02
Zwenn
Hallo Christoph,
ich kenne die Formel IMPORTXML nicht, die Du verwendest. Ich kenne mich aber leidlich mit dem DOM aus (Document Object Model) und denke, der Pfad, den Du in dem Quelltext der Seite suchst, den gibt es gar nicht und deshalb funktioniert es auch nicht. Der Grund (soweit ich es nachvollziehen kann) dürfte sein, dass Du mit einer XML Funktionalität auf einen HTML Quellcode zugreifst. In der Theorie mag das eine gute Idee sein, weil HTML streng genommen eine Untermenge der Möglichkeiten von XML ist. HTML darf man im Sinne von XML aber nie streng nehmen, wenn man nicht Schiffbruch erleiden will. Das Stichwort hier ist wohlgeformt. Genau das ist nämlich die Voraussetzung, um XML konform arbeiten zu können. HTML ist schon dann nicht mehr wohlgeformtes XML, wenn ein einfaches BR-Tag auftaucht. Denn das wird in der Regel nicht wieder geschlossen und aus die Maus.
http://wiki.selfhtml.org/wiki/XML/Regeln/Wohlgeformtheit
Die Erklärung zu dem was bei Dir funktioniert und was nicht
(Ich gehe im Folgenden davon aus, dass Du HTML beherrschst)
Deine Formel: =index(IMPORTXML($B2;"//h1[@class='companyName__99a4824b']");1)
Der hinterlegte HTML-Pfad, der ein Pfad im DOM ist, besagt: Finde das erste H1-Tag mit dem Klassennnamen "companyName__99a4824b"
Ruft man den Quellcode der Seite auf und sucht nach h1, findet man das erste H1-Tag und es hat die Klasse "companyName__99a4824b" zugewiesen. Deshalb bekommst Du mit Deiner Formel den richtigen Wert ausgelesen.

<h1 class="companyName__99a4824b">
adidas AG
</h1>

Deine Formel =index(IMPORTXML($B2;"//div[@class='contentWell__b0c648c9']");19)
Wie Du richtig erkannt hast, wird hier ein ganzer HTML-Block ausgelesen. Den gebe ich hier nicht wieder, weil der wirklich einigermaßen groß ist (1.512 Zeilen). Genau weil er das ist, kannst Du ihn in der Form ja auch nicht brauchen ;-)
Nun gibt Dir ein Werkzeug namens XpathHelper einen Pfad zur Befriedigung Deines Wunsches zurück, der aber nicht funktioniert:
/html/body/div[@id='root']/div/div[@class='contentWell__b0c648c9']/section[@class='quotePageMainContent page-modules']/section[@class='companyProfile__1e6c0f88']/div/section[@class='left__3cc58f98 description__bff5f1e8']
Wenn Du versuchst diesem Pfad im Quellcode der von Dir verlinkten Seite zu verfolgen, kommst Du nicht bis zum Ende. Der Pfad funktioniert nur bis:
/html/body/div[@id='root']/div/div[@class='contentWell__b0c648c9']/section[@class='quotePageMainContent page-modules']/section[@class='companyProfile__1e6c0f88']
Dann hast Du das folgende HTML-Fragment am Wickel:

<section class="companyProfile__1e6c0f88">
<div itemscope="" itemType="http://schema.org/Corporation">
<h2 class="name__7f85bf4e"> <span>About adidas AG </span> </h2> _
<section class="left__3cc58f98 description__bff5f1e8" itemProp="description"> _
adidas AG ... </section>
<section class="companyInfo right__44a4adf7">
<section class="dataBox address ">
<header class="title__49417cb9"> <span>Address </span> </ _
header>
<div class="value__b93f12ea">Adi-Dassler-Strasse 1
Herzogenaurach , 91074
Germany </div>
</section>
<section class="dataBox phone ">
<header class="title__49417cb9"> <span>Phone </span> </ _
header>
<div class="value__b93f12ea">49-9132-84-0 </div>
</section>
<section class="dataBox website__a0690a57">
<header class="title__bcf6f21e"> <span>Website </span> </ _
header> <a href="https://www... </a>
</section>
</section>
<section class="fundDetails__a5aa2a86"> </section>
</div>
</section>

In diesem Teil des Seiten Quellcodes findet der Teil /div/section[@class='left__3cc58f98 description__bff5f1e8'] nicht mehr statt. Deshalb erhältst Du auch nicht das gewünschte Ergebnis.
Bisher wußte ich persönlich gar nicht, dass sich Inhalte von Seiteninhalten (oder eher von wohlgeformtem XML) auch über eine einfache Formael auslesen lassen. Ich lese Seiteninhalte bisher immer über das DOM aus, unter Zuhilfenahme des Internet Explorers.
Viele Grüße,
Zwenn
Anzeige
AW: XML Pfad
11.11.2018 20:18:20
Zwenn
So,
super wenn man sich so in die Nesseln setzt! Der Teil der letzten Formel findet doch noch statt:
/div/section[@class='left__3cc58f98 description__bff5f1e8']
Es steht auch genau der Text drin, den Du möchtest. Dann müsste man sich mal die Formel genauer ansehen. Was bedeutet denn die letzte Zahl in ihr? In Deinem Fall also die 19.
Habe den Text beim ersten Nachvollziehen nicht sehen können. Aber in dem von mir geposteten Teil ist er ja dann doch drin. Woher stammt denn die Formel IMPORTXML? Excel Standard ist die nicht oder? Mir werden keine notwendigen Parameter angezeigt, wenn ich den Namen als Funktion eingebe und es gibt auch eine #NAME? Fehlermeldung, wenn ich versuche sie zu verwenden.
Viele Grüße,
Zwenn
Anzeige
AW: XML Pfad
11.11.2018 21:22:24
Christoph
Hi Zwenn,
erst einmal vielen Dank für die Antwort.
Die Funktion ImportXml ist von Google Sheets.
Sollte wohl auch über Excel und XMLFILTERN in Verbindung mit WEBDIENST möglich sein. Allerdings bekomme ich hier immer eine Fehlermeldung bei WEBDIENST, da das wohl nur mit einer API Schnittstelle funktioniert. Falls Du hier Hilfestellung geben könntest, dass ich auch mein Vorhaben in Excel umsetzen kann, wäre auch super.
Der Index mit der Nummer "19" dient dazu das 19te Suchresultat widerzuegeben.
Ich habe das auch über VBA realisiert, indem die Webseite im IE geöffnet wird und die entsprechenden Daten hierüber geladen und in Excel gespeichert werden, allerdings wäre etwas formel-basiertes natürlich schöner, ein wenig schneller, flexibler und auch für Dritte nachvollziehbarer.
Viele Grüße
Christoph
Anzeige
AW: XML Pfad
11.11.2018 21:44:37
Zwenn
Hallo Christoph,
ich dachte mir, dass die Zahl die Suchtiefe angibt. Aber wie kommst Du denn da auf 19? Versuche es mal mit 1. Falls die Zählung der Formel vorher losgeht, dann mit 0.
Ich Arbeite mit solchen Sachen ansonsten nur in Excel. Mit Google Sheets kenne ich mich nicht aus.
Viele Grüße,
Zwenn

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige