2010-04-09 24 views
4

Salut im construire un grattoir en utilisant python 2.5 et beautifulsoup mais im stuble sur un problème ... une partie de la page Web génère après que l'utilisateur a cliqué sur un bouton, qui démarre un ajax demande en appelant la fonction javacsript spécifique en utilisant les paramètres appropriésbeautifulsoup et mécaniser pour obtenir le résultat de l'appel ajax

est-il un moyen de simuler l'interaction de l'utilisateur et obtenir ce résultat? je viens à travers un module de mécaniser mais il me semble que cela est surtout utilisé pour travailler avec des formes ...

Je vous serais reconnaissant des liens ou des exemples de code grâce

Répondre

6

ok donc je l'ai tout compris ... il était assez simple après avoir réalisé que je pouvais utiliser la combinaison de urllib, ulrlib2 et beautifulsoup

import urllib, urllib2 
from BeautifulSoup import BeautifulSoup as bs_parse 

data = urllib.urlencode(values) 
req = urllib2.Request(url, data) 
res = urllib2.urlopen(req) 
page = bs_parse(res.read()) 
+2

Je suis confronté au même problème ... pls aider ... ce qui est 'values' – Umair

3

Non, vous ne pouvez pas faire facilement. AFAIK vos options sont, plus facile d'abord:

  1. Lire le code javascript AJAX vous, en tant que programmeur humain, comprendre, puis d'écrire du code python pour simuler l'AJAX appelle à la main. Vous pouvez également utiliser un logiciel de capture pour capturer des requêtes/réponses faites en direct et essayer de les reproduire avec du code;
  2. Utilisez selenium ou un autre outil d'automatisation de navigateur pour aller chercher la page sur un vrai navigateur Web;
  3. Utilisez un programme javascript python tel que spidermonkey ou pyv8 pour exécuter le code javascript, et connectez-le à votre copie du code HTML dom;
+0

salut, première option ne serais pas aussi simple que cela parce que le javascript est dans la version emballée merci pour la tête je vais regarder par-dessus la première chose tommorow – nabizan

+0

@nabizan: c'est pourquoi j'ai également suggéré l'utilisation du logiciel de capture sur l'option 1 – nosklo

+0

salut, donc après un peu de creuser sur unpack javascript je découvre que dois-je appeler et comment? que c'était assez facile (voir ma réponse pour plus d'info) – nabizan