Come automatizzare la navigazione utilizzando Python? [chiuso]
-
18-09-2019 - |
Domanda
immagino, ho bisogno di eseguire una serie di procedure su un particolare sito web per esempio, compilare alcuni moduli, fare clic pulsante di invio, inviare i dati al server di, ricevere la risposta, ancora una volta fare qualcosa in base alla risposta e inviare i dati al server del sito. So che c'è un modulo browser web in python, ma io voglio fare questo senza invocare qualsiasi browser web. E hast ad essere uno script puro.
C'è un modulo disponibile in python, che può aiutarmi a fare che?
grazie
Soluzione
Si può anche dare un'occhiata a Mechanize . Il suo significato per gestire "stateful navigazione programmatica web" (come da loro sito).
Altri suggerimenti
selenio farà esattamente quello che vuoi e che gestisce javascript
Tutte le risposte sono vecchio, mi raccomando e io sono un grande fan di richieste rel="nofollow">
Da homepage:
modulo urllib2 standard di Python fornisce la maggior parte del HTTP funzionalità necessarie, ma l'API è completamente rotto. È stato costruito per un tempo diverso - e un diverso web. Si richiede un enorme quantità di lavoro (anche metodo override) per eseguire il più semplice dei attività.
Le cose non devono essere in questo modo. Non in Python.
Credo che le migliori soluzioni è il mix di richieste e BeautifulSoup , volevo solo aggiornare la domanda in modo che possa essere mantenuto aggiornato.
http://www.seleniumhq.org/ è la soluzione migliore per me. è possibile codificare con Python, Java, il linguaggio di programmazione o qualcosa che ti piace con facilità. e semplice simulazione che convertire in programma.
Ci sono un sacco di costruito in moduli Python che whould aiutare con questo. Per esempio urllib e htmllib .
Il problema sarà più semplice se si cambia il modo in cui ci si avvicina esso. Tu dici che vuoi per "riempire alcune forme, fare clic sul pulsante di invio, inviare i dati al server di, ricevere la risposta", che suona come un processo in quattro fasi.
In realtà, ciò che è necessario fare è inviare alcuni dati su un server web e ottenere una risposta.
Questa è semplice come:
>>> import urllib
>>> params = urllib.urlencode({'spam': 1, 'eggs': 2, 'bacon': 0})
>>> f = urllib.urlopen("http://www.musi-cal.com/cgi-bin/query", params)
>>> print f.read()
(esempio tratto dalla documentazione urllib).
Quello che fai con la risposta dipende dalla complessità del HTML è e che cosa si vuole fare con esso. Si potrebbe ottenere via con l'analisi utilizzando un'espressione regolare o due, oppure è possibile utilizzare la classe htmllib.HTMLParser, o forse un livello più alto parser più flessibile come bella zuppa .
Selenium2 comprende WebDriver, che ha binding nofollow pitone e permette di impiegare il driver HtmlUnit senza testa, o passare a firefox o cromo per il debug grafica.
Non dimenticate zope.testbrowser che è wrapper meccanizzare
zope.testbrowser fornisce un browser web programmabile facile da usare, con particolare attenzione alla sperimentazione.
La soluzione migliore che ho trovato (e attualmente attuazione) è: - script in python che utilizzano il selenio WebDriver - PhantomJS del browser senza testa (se Firefox è usato si avrà un'interfaccia grafica e sarà più lenta)
HtmlUnit è il pacchetto, se sei uno sviluppatore Java. http://htmlunit.sourceforge.net/apidocs/index.html
Ho trovato il iMacros plugin per Firefox (che è gratuito) di funzionare molto bene.
Può essere automatizzato con Python utilizzando interfacce degli oggetti COM di Windows. Ecco qualche esempio di codice da http://wiki.imacros.net/Python . Richiede Python per Windows Estensioni :
import win32com.client
def Hello():
w=win32com.client.Dispatch("imacros")
w.iimInit("", 1)
w.iimPlay("Demo\\FillForm")
if __name__=='__main__':
Hello()
È probabile che desidera urllib2 . E 'in grado di gestire le cose come HTTPS, biscotti, e l'autenticazione. Si avrà probabilmente anche voler BeautifulSoup per aiutare analizzare le pagine HTML.
Si può avere uno sguardo a queste diapositive dal ultima PyCon italiano (pdf): L'autore elencato la maggior parte della biblioteca per fare raschiatura e la navigazione in python autoted. così si può avere uno sguardo esso.
mi piace molto twill (che è già stato suggerito), che è stato sviluppato da uno dei del naso gli autori ed è specificatamente mirati siti web di test.
Internet Explorer specifica, ma piuttosto buona:
Il vantaggio rispetto al urllib / BeautifulSoup è che esegue JavaScript così dato che utilizza IE.
httplib2 + BeautifulSoup
Utilizzare Firefox + Firebug + HTTPREPLAY per vedere che cosa il javascript passa da e per il browser dal sito web. Usando httplib2 si può sostanzialmente fare la stessa via posta e ottenere
Per l'automazione è sicuramente potrebbe desiderare di check-out
webbot
La sua è basato su selenio e offre molte più funzioni con pochissimo codice come trovare automaticamente gli elementi per eseguire azioni come clic, tipo in base ai vostri parametri.
La sua funziona anche per i siti con nomi di classe che cambiano dinamicamente e ID.
Ecco doc: https://webbot.readthedocs.io/