2009-12-04 2 views
2

Ceci est un cas très spécialisé et je me sens mal à l'aise de le demander; Cependant, je suis à bout de travail.Python mécaniser perd des attributs à la deuxième ouverture

Je dois suivre un numéro de suivi à travers un formulaire et une page de résultats, donc j'utilise mechanize en python, le lien après la soumission du formulaire est intégré dans javascript, donc je ne peux pas simplement suivre_link. Ce que je veux faire est de regex dehors l'url et puis demander l'appel open() là-dessus, cependant quand je fais - je rencontre quelques problèmes.

Je peux appeler br.geturl() et br.title() très bien sur la page cible, mais quand vient le temps de lire la source de la page en question, il jette

AttributeError: mechanize._mechanize.Browser instance has no attribute read (perhaps you forgot to .select_form()?) 

Est-il possible de le faire ou suis I-patcher singe trop, des conseils serait formidable

modifier [plus de code {vraiment moche juste essayer de faire fonctionner}]:

cosn="########" 
baseurl="http://aaa.com/" 
search="thing.do" 

br=Browser() 
br.open(baseurl+search) 
br.select_form('traceForm') 
br['consignments']=cosn 
req=br.submit() 
pars=Soup(req.read()) 
found_url=re.match(r"javascript:window.location.href = '(?P<url>[\w\d=&?\.]+)", pars.find('td', attrs={'class':'select'})['onclick']).group('url') 

br.open(baseurl+found_url) 
print br.title() # works 
print br.geturl() # works 
print br.read() # throws exception 
+1

Pourriez-vous poster plus de code? – codeape

Répondre

7

Vous ne faites jamais premier.read appel de méthode sur l'instance du navigateur. C'est parce qu'il n'a pas une telle méthode. La méthode a Browswer.responseread, donc si vous voulez obtenir le corps de la réponse que vous auriez besoin de le faire:

response = br.response() 
response.read() 

Pour l'avenir, vous pouvez utiliser dir(obj) pour voir le contenu de l'objet obj, que ce soit le navigateur ou autre chose.

+2

je vous remercie beaucoup, je savais que ce que je faisais était mauvais, mais je me sentais impuissant avec la documentation mécanisée – dagoof