Ich erstelle eine iOS-App, die einige Daten von einer Webseite abrufen muss. Meine erste war jedoch, NSXMLParser initWithContentsOfURL:
zu verwenden und den HTML mit dem Delegierten NSXMLParser
zu analysieren. Dieser Ansatz scheint jedoch schnell schmerzhaft zu werden (wenn sich beispielsweise der HTML-Code ändern würde, müsste ich den Parsing-Code neu schreiben, was umständlich sein könnte).Was ist der beste Ansatz zum Parsen von XML/Screen Scraping in iOS? UIWebview oder NSXMLParser?
Da ich eine Webseite lade, habe ich mir auch UIWebView
angesehen. Es sieht so aus als ob UIWebView
der Weg sein könnte. stringByEvaluatingJavaScriptFromString:
scheint eine sehr praktische Möglichkeit zu sein, die Daten zu extrahieren und würde es erlauben, das Javascript in einer separaten Datei zu speichern, die leicht zu bearbeiten wäre, wenn sich der HTML-Code ändert. Allerdings scheint UIWebView
ein bisschen hacky zu sein (da UIWebView
eine UIView
Unterklasse ist, kann es den Hauptthread blockieren, und die Dokumente sagen, dass das Javascript ein Limit von 10MB hat).
Hat jemand einen Rat in Bezug auf das Parsen von XML/HTML, bevor ich feststecke?
UPDATE:
ich einen Blog-Post über meine Lösung schrieb: HTML parsing/screen scraping in iOS
Gute Antwort! Ich denke, es ist wichtig zu beachten, dass sogar korrektes HTML von einem strikten XML-Parser abgelehnt wird - nur XHTML (korrekt geschrieben) hat eine gute Chance, einen XML-Parser zu durchlaufen, was Ihre Empfehlung von UIWebView wirklich am besten macht gehen. – JosephH
Vergessen Sie nicht, dass 'UIWebView' auch alles andere auf der Seite lädt. Bilder, Javascript, etc. Dies könnte zu einer Menge Speicherverbrauch führen. Persönlich würde ich zuerst einen regulären Ausdruck oder einen handgeschriebenen Parser ausprobieren. Wenn das zu schwierig ist, würde ich die Route 'UIWebView' gehen. –
Ausgezeichneter Punkt - Ich hatte die Wohlgeformtheit des Markups nicht berücksichtigt. Das ist für mich entscheidend. –