J'essaie d'imprimer les prix de clôture ajustés historiques de Yahoo Finance vers Google Sheets.

=ImportXML("https://sg.finance.yahoo.com/quote/"&B57&"/history?p="&B57, "//tbody/tr[21]/td[6]")

La cellule B57 est par exemple "SPY".

Cela fonctionne bien pour les prix historiques jusqu'à 100 jours. (il est ajusté ici: tr[100])

Lorsque j'essaie d'obtenir des prix plus tard 100 jours, il renvoie "N / A". Ces prix sont visibles sur Yahoo Finance.

Y a-t-il un moyen d'ajuster XPATH que cela fonctionne?

J'ai remarqué que dans le code html de Yahoo pices, environ 100 jours n'ont pas ce "data-reactid = 1520" dans la balise tr.

Merci d'avance!

0
Max 6 mai 2020 à 16:29

3 réponses

Meilleure réponse

Répondre:

IMPORTXML ne peut pas récupérer les données qui sont remplies par un script, il est donc impossible d'utiliser cette formule pour récupérer les données de cette table.

Plus d'information:

Comme les 100 premières valeurs sont chargées dans la page sans utiliser de JavaScript (comme vous pouvez le voir en désactivant JavaScript pour https://sg.finance.yahoo.com/quote/SPY/history?p=SPY et rechargement de la page), les informations peuvent être récupérées par IMPORTXML .

Comme les données après les 100 premiers résultats sont générées à la volée après avoir fait défiler la page vers le bas, les données nouvellement disponibles ne sont pas récupérables par IMPORTXML - pour autant que la formule le voit, il n'y a pas de 101 < sup> st <tr> élément et donc il affiche N/A: Imported content is empty.

Je sais que ce sont généralement de mauvaises nouvelles, mais j'espère que cela vous sera utile!

Les références:


Questions connexes:

0
Rafa Guillermo 6 mai 2020 à 14:12

Pas possible car le site yahoo utilise l'élément JavaScript - le défilement infini - qui démarre après la 100ème valeur et c'est la raison pour laquelle vous ne pouvez pas dépasser ce point. vous pouvez tester cela en désactivant JS pour un site donné et ce qui reste peut être récupéré:

0

0
player0 6 mai 2020 à 14:37

C'est possible avec une solution de contournement:

YahooFinance

Plus de 100 jours:

YF2

  • Cellule sur fond vert: le code à rechercher
  • Cellules avec fond orange: cellules contenant des formules
  • Cellules sur fond jaune: données renvoyées

Formules utilisées:

=IMPORTXML(A1;"substring-before(substring-after(//script[@id='fc'],'{""prices"":'),',""isPending')")
=SUBSTITUE(SUBSTITUE(SUBSTITUE(A3;"},{";"|");",";";");".";",")
=REGEXREPLACE(A4;"[a-z:{}\[\]""]+";"")
=TRANSPOSE(SPLIT(A5;"|"))
=(((C8/60)/60)/24)+DATE(1970;1;1)
  • IMPORTXML pour importer les données.
  • SUBSTITUE ET REGEXREPLACE pour préparer l'étape TRANSPOSE.
  • TRANSPOSE pour "construire" les lignes et SPLIT pour "construire" les colonnes.
  • DATE pour transformer l'horodatage en date.

Feuille

0
E.Wiest 6 mai 2020 à 16:52