7
votes

Comment cliquer sur un lien JavaScript: __ dopostback dans href?

J'écris un script d'écran Script en python avec le module 'Mécaniser' et j'aimerais utiliser la méthode Mechanize.click_Link () sur un lien avec JavaScript: __ dopostback dans href. Je crois que la page que j'essaie d'analyser est d'utiliser Ajax.

Remarque: Mech est le Mechanize.Browser () P>

>>> next_link.__class__.__name__
'Link'
>>> next_link
Link(base_url='http://www.citius.mj.pt/Portal/consultas/ConsultasDistribuicao.aspx', url="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')", text='2', tag='a', attrs=[('id', 'ctl00_ContentPlaceHolder1_Pager1_lnkNext'), ('title', 'P\xc3\xa1gina seguinte: 2'), ('href', "javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')")])
>>> req = mech.click_link(next_link)
>>> req
<urllib2.Request instance at 0x025BEE40>
>>> req.has_data()
False


0 commentaires

3 Réponses :


1
votes

Je ne pense pas mécaniser prend en charge JavaScript; Pour gratter des pages qui s'appuient intrinsèquement sur l'exécution JavaScript pour leur fonctionnalité, vous devrez peut-être utiliser un outil différent, tel que Selenium RC .


0 commentaires

0
votes
>>> next_link.__class__.__name__
'Link'
>>> next_link
Link(base_url='http://www.citius.mj.pt/Portal/consultas/ConsultasDistribuicao.aspx', url="javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')", text='2', tag='a', attrs=[('id', 'ctl00_ContentPlaceHolder1_Pager1_lnkNext'), ('title', 'P\xc3\xa1gina seguinte: 2'), ('href', "javascript:__doPostBack('ctl00$ContentPlaceHolder1$Pager1$lnkNext','')")])
>>> req = mech.click_link(next_link)
>>> req
<urllib2.Request instance at 0x025BEE40>
>>> req.has_data()
False

0 commentaires

10
votes

Je n'utilise pas de mécanismes, mais je fais beaucoup de bande me grattant avec python.

Lorsque je rencontre une fonction JavaScript comme __dopostback, je fais ce qui suit:
J'accède au site Web de Firefox et utilisez le Extension httpfox pour voir les paramètres de la POST Demandez le navigateur envoyé sur le serveur Web lorsque vous cliquez sur le lien correspondant.
Je construis ensuite la même demande en python à l'aide de Urllib.Parse.urlencode pour construire les chaînes de requête et poster des données dont j'ai besoin.
Parfois, le site Web utilise également des cookies, donc je viens d'utiliser http.cookiejar de Python.

J'ai utilisé cette technique avec succès plusieurs fois.


1 commentaires

Que dois-je faire quand je reçois la réponse, comment puis-je le décoder?