Frage

Ich bin ein Bildschirm Schaber Skript in Python mit dem Modul ‚mechanisieren‘ schreiben, und ich möchte die mechanize.click_link () -Methode auf einen Link verwenden, die Javascript hat: __ doPostBack in href. Ich glaube, die Seite, die ich zu analysieren, ich versuche, ist AJAX.

Hinweis: mech ist die mechanize.Browser ()

>>> 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

Ich möchte die Seite Quelle abzurufen, nachdem auf den Link klicken.

War es hilfreich?

Lösung

Ich benutze keine mechanisieren, aber ich habe eine Menge von Web selbst mit Python Schaben.

Wenn ich in eine Javascript-Funktion, wie __doPostBack laufen, kann ich folgendes:
Ich greife auf die Website in Firefox, und verwenden Sie die HttpFox Erweiterung um die Parameter des sehen POST-Anfrage den Browser an den Web-Server gesendet, wenn auf den entsprechenden Link klicken.
Ich baue dann die gleiche Anfrage in Python mit urllib.parse.urlencode die Abfrage-Strings und POST-Daten erstellen ich brauche.
Manchmal ist die Website verwendet Cookies als gut, so dass ich nur Python http.cookiejar.

Ich habe diese Technik mehrfach erfolgreich eingesetzt.

Andere Tipps

Ich glaube nicht, mechanize unterstützt Javascript; Seiten, die an sich stützen sich auf Javascript-Ausführung für ihre Funktionalität zu kratzen, müssen Sie a href ein anderes Werkzeug verwenden, wie zum Beispiel <= „http://seleniumhq.org/projects/remote-control/“ rel = „nofollow noreferrer“ > Selenium RC .

>>> 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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top