Quelle est la meilleure façon d'analyser le code html dans google apps script
var page = UrlFetchApp.fetch(contestURL);
var doc = XmlService.parse(page);
Le code ci-dessus donne une erreur d'analyse lorsqu'il est utilisé, cependant si je remplace le XmlService de classe avec le obsolète de la classe Xml, avec clément indicateur est défini, il analyse le code html correctement.
var page = UrlFetchApp.fetch(contestURL);
var doc = Xml.parse(page, true);
Le problème est causé principalement en raison de l'absence CDATA dans la partie javascript de l'html et de l'analyseur se plaint avec l'erreur suivante.
The entity name must immediately follow the '&' in the entity reference.
Même si j'ai supprimer tous les <script>(.*?)</script>
en utilisant les regex, il se plaint encore parce que le <br>
les balises ne sont pas fermées.
Est-il un moyen propre de l'analyse html dans une arborescence DOM.
- Voir stackoverflow.com/a/1732454/362634 ...
- Vous pourriez peut-être aller chercher la page et à l'aide d'un analyseur à dépouiller le unwants balises, puis de lancer une autre analyse, qui peut être possible. Je sais que XmlService fonctionne bien, mais est une sorte de buggy.
Vous devez vous connecter pour publier un commentaire.
J'ai rencontré exactement le même problème. J'ai été en mesure de contourner cela en utilisant d'abord le obsolète
Xml.parse
, car il fonctionne toujours, puis en sélectionnant le corps XmlElement, puis, passant dans sa Chaîne Xml dans le nouveauXmlService.parse
méthode:Remarque: Cette solution peut ne pas fonctionner si le vieux
Xml.parse
est complètement retiré de Scripts Google.J'ai trouvé que la meilleure façon d'analyser le code html dans google apps est d'éviter d'utiliser XmlService.d'analyser ou de Xml.l'analyser. XmlService.analyser ne fonctionne pas bien avec le mauvais code html à partir de certains sites web.
Ici un exemple de base sur la façon dont vous pouvez analyser n'importe quel site web facilement sans l'aide de XmlService.d'analyser ou de Xml.l'analyser. Dans cet exemple, je suis à la recherche d'une liste de président de "wikipedia.org/wiki/President_of_the_United_States"
whit régulièrement javascript document.getElementsByTagName(), et coller les valeurs dans ma feuille de calcul google.
1 - Créer un nouveau Google Feuille;
2 - Cliquez sur le menu Outils > éditeur de Script... pour ouvrir un nouvel onglet avec la fenêtre éditeur de code et copier le code suivant dans votre Code.gs:
3 - Ajouter un fichier HTML à votre Apps Script de projet. Ouvrir l'Éditeur de Script et choisissez le Fichier > Nouveau > Fichier Html, et nommez-le "test".Ensuite copier le code suivant dans votre test.html
4 - Enregistrer votre gs et les fichiers html et revenir à votre feuille de calcul. Recharger votre feuille de calcul. Cliquez sur "Analyser Menu" - "Analyser". Cliquez ensuite sur "Cliquez ici pour obtenir la liste" dans la barre latérale.
Xml.parse()
dispose d'une option pour activer clémente de l'analyse, qui aide lors de l'analyse d'HTML. Notez que leXml
service est obsolète, cependant, et la plus récenteXmlService
ne dispose pas de cette fonctionnalité.Utiliser une expression régulière:
null
pour moi.Nativement il n'y a aucun moyen, sauf si vous faites ce que vous avez déjà essayé de qui ne fonctionnent pas si le html ne marche pas conformes au format xml.
Je sais que c'est pas exactement ce que l'OP a demandé, mais j'ai trouvé cette question quand j'étais à la recherche pour certains d'analyse html options - donc, il pourrait être utile pour d'autres personnes.
Il y a un facile à utiliser la bibliothèque pour l'analyse de TEXTE. C'est utile si vous voulez obtenir un seul élément d'information de l'html(xml) du code.
Il fonctionne comme dans l'image ci-dessus