web-dev-qa-db-fra.com

Extraction des codes GICS du site Web de Fidelity

C'est le site web:

https://eresearch.fidelity.com/eresearch/goto/evaluate/snapshot.jhtml?symbols=aapl&type=o-NavBar

J'essaie d'extraire les deux données suivantes dans une feuille Google:

  • Secteur (GICS®)
  • Industrie (GICS®)

C'est-à-dire que je veux que les deux suivants apparaissent pour ce qui précède:

  • Informatique
  • Matériel informatique, stockage et périphériques

J'ai essayé les techniques habituelles, notamment:

  • importer des données
  • importHTML
  • importXML (cela a donné une erreur).

Les XPath que j'ai dérivés à l'aide de l'outil Inspect Element de Google sont les suivants:

  • //*[@id="companyProfile"]/div[8]/span/a
  • //*[@id="companyProfile"]/div[13]/span/a

Rien n'a fonctionné jusqu'à présent. Comment puis-je extraire ces données dans une feuille Google?

2
thanks_in_advance

La commande IMPORTXML ignore les nœuds sans contenu textuel: par exemple, prenez //div[3] dans le document contenant le corps.

<div>First</div> <div>Second</div> <div></div> <div>Fourth</div>

résultats dans "quatrième". Ainsi, lorsque vous comptez les éléments <div>, ignorez ceux où il n'y a pas de texte. Les éléments que vous recherchez sont retournés avec

=IMPORTXML( url , "//div[@id='companyProfile']/div[4]/span")

et

=IMPORTXML( url , "//div[@id='companyProfile']/div[5]/span")

Pour une solution plus robuste, je conseille de ne pas compter du tout sur la numérotation des éléments. La commande suivante renvoie les deux valeurs souhaitées avec un seul appel, l'une sous l'autre:

=IMPORTXML( url , "//div[@id='companyProfile']/div[@class='sub-heading']/span")

Vous pouvez appliquer TRANSPOSE au résultat pour les mettre côte à côte, si cela est préférable. Ou, si un positionnement personnalisé est nécessaire, obtenez-en un à la fois avec

=IMPORTXML( url , "//div[@id='companyProfile']/div[@class='sub-heading'][1]/span")

et

=IMPORTXML( url , "//div[@id='companyProfile']/div[@class='sub-heading'][2]/span")

Notez qu'il convient d'utiliser des guillemets simples dans une commande XPath, car il s'agit d'une chaîne entourée de guillemets doubles.


L’utilisation de de l’outil Inspecter l’élément n’est pas une mauvaise idée en soi (elle montre une belle vue arborescente du document), mais il ya une mise en garde importante: cet outil affiche le document après du JavaScript s'exécute sur la page, tandis que IMPORTXML obtient le source tel quel avant tout traitement JavaScript. Ceci est important lorsque certains éléments sont ajoutés par un script (exemple dans ma réponse ici ). Pour voir exactement avec quoi IMPORTXML fonctionne, utilisez le clic droit -> "Afficher le code source de la page" dans Chrome ou son équivalent dans les autres navigateurs.

2
user79865