Estoy creando una aplicación iOS que necesita para obtener algunos datos de una página web. Mi primer pensamiento fue usar NSXMLParser initWithContentsOfURL:
y analizar el HTML con el delegado NSXMLParser
. Sin embargo, este enfoque parece que podría volverse doloroso rápidamente (si, por ejemplo, el HTML cambiara, tendría que volver a escribir el código de análisis, lo que podría ser incómodo).¿Cuál es el mejor enfoque para analizar XML/'screen scraping' en iOS? UIWebview o NSXMLParser?
Al ver que estoy cargando una página web eché un vistazo al UIWebView
también. Parece que UIWebView
puede ser el camino a seguir. stringByEvaluatingJavaScriptFromString:
parece una forma muy práctica de extraer los datos y permitiría que el javascript se guarde en un archivo separado que sería fácil de editar si se cambiara el HTML. Sin embargo, usar UIWebView
parece un poco hacky (ya que UIWebView
es una subclase UIView
puede bloquear el hilo principal, y los documentos dicen que el javascript tiene un límite de 10MB).
¿Alguien tiene algún consejo con respecto al análisis de XML/HTML antes de que me quede atascado?
ACTUALIZACIÓN:
escribí un post sobre mi solución: HTML parsing/screen scraping in iOS
¡Buena respuesta! Creo que es importante tener en cuenta que incluso el HTML correcto será rechazado por un analizador XML estricto; solo (correctamente escrito) XHTML realmente tiene buenas posibilidades de pasar por un analizador XML, lo que realmente hace que su recomendación de UIWebView sea la mejor ruta ir. – JosephH
Bueno, no olvides que el 'UIWebView' también cargará todo lo demás en la página. Imágenes, Javascript, etc. Esto podría generar MUCHO uso de memoria. Personalmente, realmente probaría una expresión regular o un analizador manuscrito primero. Si eso es demasiado difícil, entonces iría a la ruta 'UIWebView'. –
Excelente punto - No había considerado la buena formación del marcado. Eso se cierra para mí. –