2012-02-27 2 views
1

J'ai pratiqué mes capacités de raclage en Python. Je me suis plutôt bien débrouillé, mais j'ai rencontré quelques sites qui me gênent. Ils utilisent Ajax pour trouver les endroits à proximité. Il existe plusieurs sites conçus de la même manière. L'un des sites Web est www.applebees.com. Même en utilisant firebug je ne trouve pas la réponse.Grattage Ajax avec Python

Comment Python peut-il demander les emplacements via l'appel ajax? Je suis complètement perplexe.

La page est www.applebees.com, il y a un formulaire sur le côté droit pour entrer le code postal et il tire les emplacements les plus proches de ce code postal. Cependant, si je tire la source après que ce code postal est entré, les emplacements n'apparaissent toujours pas dans le fichier source. La requête/réponse est complètement ajax et cachée à la source html, je n'ai jamais rien vu de tel. J'essaie de rechercher une solution maintenant.

+1

Ajax est une façon populaire de faire des requêtes HTTP, Python est un langage de programmation. La seule bonne réponse consiste à "utiliser votre bibliothèque HTTP préférée". –

+1

Pourriez-vous fournir un exemple plus précis? Par exemple, une page particulière chez Applebee? –

Répondre

7

L'éraflure par programmation à l'aide d'une bibliothèque http peut être difficile pour certains sites. Si vous essayez de simuler une interaction utilisateur sur un site JavaScript lourd (ajax ou autre), vous pouvez envisager de piloter un véritable navigateur en utilisant quelque chose comme le sélénium. Il y a une navigation client python et vous aurez un accès à la page DOM.

http://pypi.python.org/pypi/selenium

+1

Je pourrais ajouter un lien vers ma propre bibliothèque, [dryscrape] (https://github.com/niklasb/dryscrape), qui utilise QtWebkit pour gratter les pages Web lourdes Javascript en utilisant une instance de navigateur en mémoire (sans tête). C'est à la fois léger et plus rapide que Selenium et les alikes. –

+0

Même avec les suggestions que vous avez données, je ne comprends pas comment je peux extraire les noms et les adresses de lieux, quand la source html qui est enregistrée même après avoir soumis manuellement le code postal, n'existe pas. Je peux voir les informations sur mon écran et dans firebug, mais en téléchargeant la source il n'est pas là. –

+0

Après avoir étudié cela plus de sélénium semble être la seule voie. Niklas est également une option. Merci pour toutes vos réponses –

Questions connexes