Sto creando un'app per iOS che ha bisogno di ottenere alcuni dati da una pagina web. Il mio primo pensiero è stato quello di utilizzare NSXMLParser initWithContentsOfURL:
e analizzare l'HTML con il delegato NSXMLParser
. Tuttavia, questo approccio sembra che potrebbe diventare rapidamente doloroso (se, ad esempio, l'HTML fosse cambiato, dovrei riscrivere il codice di analisi che potrebbe essere scomodo).Qual è l'approccio migliore per l'analisi di XML/'screen scraping' in iOS? UIWebview o NSXMLParser?
Visto che sto caricando una pagina Web, ho dato un'occhiata allo UIWebView
. Sembra che UIWebView
potrebbe essere la strada da percorrere. stringByEvaluatingJavaScriptFromString:
sembra un modo molto pratico per estrarre i dati e consentirebbe il javascript di essere memorizzato in un file separato che sarebbe facile da modificare se l'HTML modificato. Tuttavia, l'uso di UIWebView
sembra un po 'hacky (visto che UIWebView
è una sottoclasse UIView
, potrebbe bloccare il thread principale e i documenti dicono che il javascript ha un limite di 10 MB).
Qualcuno ha qualche consiglio in merito all'analisi di XML/HTML prima di rimanere bloccato?
UPDATE:
ho scritto un post su mia soluzione: HTML parsing/screen scraping in iOS
Buona risposta! Penso che sia importante notare che anche l'HTML corretto verrà rifiutato da un parser XML rigoroso - solo XHTML (correttamente scritto) ha davvero una buona possibilità di ottenere un parser XML, il che rende davvero la raccomandazione di UIWebView il percorso più probabile per partire. – JosephH
Bene, non dimenticare che 'UIWebView' caricherà anche tutto il resto sulla pagina. Immagini, Javascript, ecc. Ciò potrebbe portare a MOLTO uso della memoria. Personalmente, proverei per prima cosa un'espressione regolare o un parser scritto a mano. Se questo è troppo difficile, andrei sulla rotta 'UIWebView'. –
Punto eccellente: non avevo considerato la buona forma del markup. Questo vale per me. –