Ich fand die Verwendung von hpple sehr nützlich, um unordentliches HTML zu analysieren. Das Hpple-Projekt ist ein Objective-C-Wrapper in der XPathQuery-Bibliothek zum Parsen von HTML. Mit ihm können Sie eine XPath-Abfrage senden und das Ergebnis erhalten.
Anforderungen :
- Fügen Sie libxml2 zu Ihrem Projekt hinzu
- Menü Projekt-> Projekteinstellungen bearbeiten
- Suchen Sie nach der Einstellung "Header-Suchpfade"
- Fügen Sie einen neuen Suchpfad hinzu "$ {SDKROOT} / usr / include / libxml2"
- Aktivieren Sie die rekursive Option
- Fügen Sie Ihrem Projekt die Bibliothek libxml2 hinzu
- Menü Projekt-> Projekteinstellungen bearbeiten
- Suchen Sie nach der Einstellung "Andere Linker-Flags"
- Fügen Sie ein neues Suchflag "-lxml2" hinzu.
- Holen Sie sich von hpple die folgenden Quellcodedateien und fügen Sie sie Ihrem Projekt hinzu:
- TFpple.h
- TFpple.m
- TFppleElement.h
- TFppleElement.m
- XPathQuery.h
- XPathQuery.m
- Machen Sie einen Spaziergang im w3school XPath Tutorial , um sich mit der XPath-Sprache vertraut zu machen.
Codebeispiel
#import "TFHpple.h"
NSData *data = [[NSData alloc] initWithContentsOfFile:@"example.html"];
xpathParser = [[TFHpple alloc] initWithHTMLData:data];
NSArray *elements = [xpathParser searchWithXPathQuery:@"//table[3]/tr[2]/td"];
TFHppleElement *element = [elements objectAtIndex:0];
NSString *content = [element content];
[xpathParser release];
[data release];
Bekannte Probleme
Da hpple ein Wrapper über XPathQuery ist, der ein weiterer Wrapper ist, ist diese Option wahrscheinlich nicht die effizienteste. Wenn die Leistung in Ihrem Projekt ein Problem darstellt, empfehle ich, Ihre eigene Lightweight-Lösung basierend auf dem Bibliothekscode hpple und xpathquery zu codieren.