J'ai trouvé à l'aide de hpple très utile pour analyser désordre HTML. Hpple projet est un Objectif-C wrapper sur le XPathQuery de la bibliothèque pour l'analyse de code HTML. En l'utilisant, vous pouvez envoyer une requête XPath et recevoir le résultat .
Exigences:
-Ajouter libxml2 comprend à votre projet
- Menu Projet->Modifier Les Paramètres Du Projet
- Recherche pour le paramètre "l'en-Tête des Chemins de Recherche"
- Ajouter un nouveau chemin de recherche "${SDKROOT}/usr/include/libxml2"
- Activer l'option récursive
-Ajouter de la bibliothèque libxml2 pour votre projet
- Menu Projet->Modifier Les Paramètres Du Projet
- Recherche pour le réglage "Autres Drapeaux de l'éditeur de liens"
- Ajouter un nouvel indicateur de recherche "-lxml2"
-À partir de hpple obtenir le code source suivant fichiers un les ajouter à votre projet:
- TFpple.h
- TFpple.m
- TFppleElement.h
- TFppleElement.m
- XPathQuery.h
- XPathQuery.m
-Prendre une promenade sur w3school XPath Tutoriel pour se sentir à l'aise avec le langage XPath.
Exemple De Code
#import "TFHpple.h"
NSData *data = [[NSData alloc] initWithContentsOfFile:@"example.html"];
// Create parser
xpathParser = [[TFHpple alloc] initWithHTMLData:data];
//Get all the cells of the 2nd row of the 3rd table
NSArray *elements = [xpathParser searchWithXPathQuery:@"//table[3]/tr[2]/td"];
// Access the first cell
TFHppleElement *element = [elements objectAtIndex:0];
// Get the text within the cell tag
NSString *content = [element content];
[xpathParser release];
[data release];
Problèmes connus
Comme hpple est un wrapper sur XPathQuery qui est une autre enveloppe, cette option n'est probablement pas le plus efficace. Si la performance est un problème dans votre projet, je vous recommande de code de votre propre solution légère basée sur hpple et xpathquery code de la bibliothèque.