Je crée une application iOS qui a besoin d'obtenir des données d'une page Web. Mon premier était cependant d'utiliser NSXMLParser initWithContentsOfURL:
et d'analyser le code HTML avec le délégué NSXMLParser
. Cependant, cette approche semble être rapidement pénible (si, par exemple, le HTML changeait, je devrais réécrire le code d'analyse, ce qui pourrait être gênant). Voyant que je charge une page Web que j'ai pris, jetez un oeil à UIWebView
aussi. Il semble que UIWebView
peut être le chemin à parcourir. stringByEvaluatingJavaScriptFromString:
semble être un moyen très pratique d'extraire les données et permettrait de stocker le javascript dans un fichier séparé qui serait facile à modifier si le code HTML changeait. Cependant, en utilisant UIWebView
semble un peu hacky (vu que UIWebView
est une sous-classe UIView
, il peut bloquer le thread principal, et les docs disent que le javascript a une limite de 10 Mo).Quelle est la meilleure approche pour analyser XML/'scraping d'écran' dans iOS? UIWebview ou NSXMLParser?
Quelqu'un a-t-il un conseil à propos de l'analyse XML/HTML avant de rester bloqué?
MISE À JOUR:
J'ai écrit un blog sur ma solution: HTML parsing/screen scraping in iOS
Bonne réponse! Je pense qu'il est important de noter que même un HTML correct sera rejeté par un analyseur XML strict - seul XHTML (correctement écrit) a de bonnes chances de passer à travers un analyseur XML, ce qui fait de votre recommandation d'UIWebView le meilleur moyen de aller. – JosephH
Eh bien, n'oubliez pas que 'UIWebView' va aussi charger tout le reste sur la page. Images, Javascript, etc. Cela pourrait conduire à beaucoup d'utilisation de la mémoire. Personnellement, j'essaierais d'abord une expression régulière ou un analyseur manuscrit. Si c'est trop difficile, alors j'irais sur la route 'UIWebView'. –
Excellent point - Je n'avais pas considéré la bonne forme du balisage. Cela claque pour moi. –