web-dev-qa-db-fra.com

Comment savoir si les fonctions IMPORTDATA, IMPORTFEED, IMPORTHTML ou IMPORTXML de Google Sheets peuvent obtenir des données à partir d'une ressource hébergée sur un site Web?

Google Sheets a plusieurs fonctions d'importation

  • IMPORTER DES DONNÉES
  • IMPORTFEED
  • IMPORTHTML
  • IMPORTXML

Parfois, les fonctions ci-dessus renvoient des erreurs comme #N/A Imported content is empty et voudraient être sûres que le contenu de la ressource à importer ne pose pas de problème.

Comment savoir si ces fonctions peuvent obtenir le contenu que je souhaite importer?

Je sais qu’il existe également IMPORTRANGE mais cette fonction ne peut importer du contenu à partir de feuilles de calcul Google

1
Rubén

IMPORTDATA, IMPORTFEED, IMPORTHTML et IMPORTXML peuvent obtenir du contenu à partir de ressources hébergées sur des sites Web qui sont:

  • Disponible publiquement. Cela signifie que la ressource n'a pas besoin d'autorisation/pour être connectée à aucun service pour y accéder.
  • Le contenu est "statique". Cela signifie que si vous ouvrez la ressource à l'aide de l'option Afficher le code source des navigateurs Web modernes, celle-ci sera affichée en texte brut.
    • REMARQUE: l'outil d'inspection de Chrome affiche le DOM analysé. dans d’autres travaux, la structure/le contenu de la page Web peut être modifié dynamiquement par du code JavaScript ou des extensions/plug-ins de navigateur.
  • Le contenu a la structure approuvée.
    • IMPORTDATA fonctionne avec un contenu structuré, car csv ou tsv n'a aucune importance pour l'extension de fichier de la ressource.
    • IMPORTFEED fonctionne avec un contenu balisé comme ATOM/RSS
    • IMPORTHTML fonctionne avec un contenu balisé comme HTML qui inclut une liste ou des tableaux balisés correctement.
    • IMPORTXML fonctionne avec un contenu balisé comme XML ou n’importe laquelle de ses variantes comme XHTML.

Sur Validateur de balisage W3C il existe plusieurs outils pour vérifier si les ressources ont été correctement balisées.

En ce qui concerne la vérification CSV Existe-t-il des services connus pour valider les fichiers CSV

Il est intéressant de noter que le tableur

  • devrait avoir assez de place pour le contenu importé; Google Sheets a une limite de 5 millions de cellules par feuille de calcul, selon cet article une limite de colonnes de 18278, et 50 000 caractères en tant que contenu de cellule, même sous forme de valeur ou de formule.
  • il ne gère pas bien le contenu important dans la cellule; la "limite" dépend de la taille de l'écran et de la résolution de l'utilisateur, car il est désormais possible d'effectuer un zoom avant/arrière.
2
Rubén

(Peut-être pas la réponse, mais voici un humble guide de grattage)

  • tout commence par la désactivation de JavaScript pour que le site Web voie ce qui reste et ce qui peut être mis au rebut
  • le premier choix est toujours IMPORTHTML et lentement (rangée 1 par 1) traîné vers le bas
    =IMPORTHTML("URL"; "TABLE"; ROW(A1)-1)
  • si cela échoue, répétez-le avec:
    =IMPORTHTML("URL"; "LIST"; ROW(A1)-1)
  • si cela échoue également, passez à IMPORTXML
    =IMPORTXML("URL"; "//*")
  • si cela retourne autre chose que #N/A, il peut être réduit avec XPath ou regexed/interrogé. si toujours pas de chance, il est possible d'utiliser des appels d'API ou des données JSON au lieu d'une URL publique (si existante)
    =IMPORTXML("URL"; "//div[@class='primary']")
  • si IMPORTXML ne peut pas obtenir JSON, il existe des fonctions personnalisées IMPORTJSON sur GitHub
  • en dernier recours, il y a IMPORTDATA et en grattant des éléments du code source tels que:
    =ARRAY_CONSTRAIN(IMPORTDATA("URL"); 8000; 20)
    _=REGEXEXTRACT(QUERY(ARRAY_CONSTRAIN(IMPORTDATA("URL"); 3000; 2); 
     "where Col1 contains 'meta table id something'"); "\>(.+)\<")_
  • et si après tous les essais, le résultat est toujours #N/A, il y a toujours du temps pour abandonner et trouver un site similaire qui peut être gratté

(encore quelques RL _ exemples de techniques mentionnées here)

2
user0