2009-09-10 5 views

Répondre

6

Vous pourriez utiliser quelque chose comme Google Maps. Géocoder l'adresse et, en cas de succès, l'API de Google renverra une représentation XML de l'adresse avec tous les éléments séparés (et corrigés ou complétés).

EDIT:

Je suis soumis au vote vers le bas et ne sais pas pourquoi. L'analyse des adresses peut être un peu difficile. Voici un exemple d'utilisation de Google pour ce faire:

http://blog.nerdburn.com/entries/code/how-to-parse-google-maps-returned-address-data-a-simple-jquery-plugin

Je ne dis pas cela est la seule façon ou nécessairement la meilleure façon. Juste un façon d'analyser les adresses sur un site Web.

+0

Up-voté vous. Traiter les services «dans le nuage» comme l'API Google Maps comme une bibliothèque (ce que l'affiche a demandé) est valide, à mon humble avis. –

+0

:) merci pour le vote – marcc

+0

peut-être les downvotes sont pour ne pas adresser obtenir les adresses de la page html en premier lieu? juste une supposition. – ysth

2

Il y a 2 parties à ceci: extraire l'adresse complète de la page, et analyser cette adresse en quelque chose que vous pouvez utiliser (stocker les différentes parties dans une base de données par exemple).

Pour la première partie, vous aurez besoin d'une heuristique, probablement dépendante du pays: pour les adresses américaines, [A-Z][A-Z],?\s*\d\d\d\d\d devrait vous donner la fin d'une adresse, à condition que les 2 lettres s'avèrent être un état. Trouver le début de la chaîne est laissé comme un exercice.

La deuxième partie peut être faite soit par un appel à Google Maps, ou comme d'habitude en Perl, en utilisant un module CPAN: Lingua::EN::AddressParse (testez-le sur vos données pour voir si cela fonctionne assez bien pour vous).

Dans tous les cas, il s'agit d'une tâche difficile, et vous ne l'obtiendrez probablement jamais à 100%, prévoyez donc de vérifier manuellement les adresses avant de les utiliser.

0

Vous n'avez pas besoin d'expressions régulières (pour l'instant) ou d'un analyseur général comme pyparsing (du tout). Regardez quelque chose comme Beautiful Soup, qui va analyser même le mauvais HTML en quelque chose comme un arbre de tags. À partir de là, vous pouvez regarder la source de la page et découvrir les balises à explorer pour accéder aux données. Ensuite, à partir de l'arborescence de Beautiful Soup, vous pouvez rechercher ces nœuds en utilisant XPath (dans les versions récentes), et passer directement en boucle sur les balises qui vous intéressent, pour accéder facilement aux données réelles. De là, vous pouvez analyser les données en utilisant une regex rapide ou quelque chose. Ce sera plus flexible et plus à l'épreuve du futur, et peut-être aussi moins explosif, que de simplement essayer de le faire dans des expressions régulières pures.

Questions connexes