Question

Je me demande s’il existe des bibliothèques existantes ou accessibles à partir d’Objective-C qui me permettraient de gratter des pages au format celui-ci . Plus précisément, toutes les dates et tout le texte à côté de chaque date. Si non, quelle serait la meilleure façon de s'y prendre? Expressions régulières? J'ai entendu dire que NSString pouvait déjà avoir des méthodes intégrées pour cela. Est-ce vrai?

Je cherchais autour de moi pour voir s'il existait une alternative au raclage, telle qu'un fichier XML ou une API. J'ai trouvé une API, mais les seuls clients que je vois disponibles sont dans d'autres langues et ils semblent pouvoir simplement poster du contenu sur des pages, pas le récupérer.

MODIFIER : j'ai donc trouvé plus d'informations sur l'API sur ces liens:

Et j'ai pu trouver cette demande qui retourne du texte codé en HTML (le format est XML, mais il inclut le texte de la page, tel que href = etc. Je vais continuer à regarder dans la documentation pour voir si je peut faire en sorte que cela sorte un peu mieux, sinon, y at-il des recommandations sur l’analyse de ceci?

MODIFIER 2 : Merci donc pour ceci La page doc , la manière la plus simple et la plus propre de récupérer les données consiste à utiliser cette lien construit qui renvoie les données brutes ( Dans le balisage wiki ) de la section correspondante. Cependant, j’imagine que j’aurais alors besoin de l’analyser, bien que si tel est vraiment le cas, cela devrait être beaucoup plus simple que l’article en entier.

Quelqu'un a-t-il des recommandations sur l'analyse du balisage wiki tel que celui décrit ci-dessous dans Objective-C?

==Events==
* [[710]] – [[Saracen]] invasion of [[Sardinia]].
*[[1275]] – Traditional founding of the city of [[Amsterdam]].
*[[1682]] – [[Philadelphia]], [[Pennsylvania]] is founded.

Ce que je veux finir par avoir est, je suppose, un NSDictionary ou une collection similaire qui stockera la date avec le fragment d’information qui l’accompagne. Merci!

Était-ce utile?

La solution

Je vais suggérer regex pour une extraction de données ciblée dans un flux de données HTML mixte.

Il existe déjà des bibliothèques RegEx sur le téléphone. Celles-ci sont en quelque sorte cachées. Vous pouvez les exposer avec quelques appels simples en utilisant RegexKitLite (assurez-vous de faire défiler la liste pour obtenir la version light). Il s’agit finalement d’une classe avec quelques extensions sur NSString qui vous permet de créer des regex, puis vous définiriez une regex avec deux correspondances capturées - une pour le nombre et une pour le contenu, avec un nombre de correspondances non capturées pour les balises englobantes et intermédiaires. Même s’il s’agit d’un "lite" version standard de RegEX, il supporte à peu près toutes les capacités dont vous auriez besoin.

L'approche API est prometteuse, mais une fois que vous aurez obtenu le balisage brut, vous devrez probablement adopter une approche similaire à l'expression régulière pour l'analyse des données. Cela pourrait quand même avoir du sens si cela réduit la complexité de la regex et le temps de transfert des données, ce qui n’empêche que vous ne pouvez pas combiner les deux approches.

Autres conseils

Ajoutez un & format = fmt à la fin de votre requête, comme décrit à API: formats de données . Votre requête devient: requête JSON , pour Exemple. Vous pouvez spécifier XML, JSON ou de nombreux autres formats.

Vous pouvez facilement analyser les sections globales, puis simplement afficher la sortie au format HTML dans une vue Web.

Etant donné que les pages sur Wikipedia sont stockées en tant que texte brut et que les utilisateurs le sont en texte clair, vous n’allez pas obtenir un ensemble de données structuré.

J'ai gratté beaucoup de données de WP de différentes manières. le format dépend de nombreux facteurs, notamment du type de sous-domaine dans lequel l’information se trouve et de la date de sa saisie. Le texte principal est en format libre et il n’existe pas de moyen simple de le supprimer. Les infoboxes sont dans un format WP spécial qui a changé au fil des ans. Il n'a pas été conçu pour être éraflé.

Il existe une base de données de sauvegarde WP qui est un peu plus structurée.

De loin, votre meilleure stratégie consiste à contacter les wikipédiens du domaine que vous souhaitez gratter - ils connaîtront le format de la base de données et seront peut-être en mesure de vous aider - ils voudront pour vous aider ils voudront voir WP sous forme sémantique (comme DBPedia - http://dbpedia.org/About ) .

Est-ce que Python compte? ;) Il est accessible à partir d’Objective-C . Et il existe d'excellents modules à des fins de grattage: Belle Savon et / ou mécaniser, vous pouvez également envisager de lxml.

ce n'est vraiment pas la manière de le faire, dans aucune langue.

Si un site en ligne expose ses données de manière agréable, ce sera wikipedia.

cherchez à obtenir un article au format XML, RDF ou même JSON.

J'ai une application iPhone qui efface l'écran en utilisant les éléments suivants:

En utilisant YQL, vous pouvez obtenir toutes les informations dont vous avez besoin sur le Web en utilisant des requêtes XPATH sur le DOM.

Personnellement, je pense que c’est beaucoup mieux que d’utiliser Regex. Là encore, je ne connais que des expressions régulières très simples.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top