Devo riempire i valori del modulo su una pagina di destinazione quindi fare clic su un pulsante tramite Python. Ho esaminato Selenium e Windmill, ma questi sono framework di test - non sto testando. Sto cercando di accedere a un sito Web di terze parti in modo programmatico, quindi scaricare e analizzare un file che dobbiamo inserire nel nostro database. Il problema con i framework di test è che lanciano istanze di browser; Voglio solo uno script che posso pianificare per eseguire ogni giorno per recuperare la pagina che voglio. Un modo per farlo?Compila i valori del modulo in una pagina Web tramite uno script Python (non test)
21
A
risposta
21
Siete alla ricerca di campione presentando Mechanize
Forma:
import re
from mechanize import Browser
br = Browser()
br.open("http://www.example.com/")
br.select_form(name="order")
# Browser passes through unknown attributes (including methods)
# to the selected HTMLForm (from ClientForm).
br["cheeses"] = ["mozzarella", "caerphilly"] # (the method here is __setitem__)
response = br.submit() # submit current form
3
È possibile utilizzare il urllib
libreria standard per farlo in questo modo:
import urllib
urllib.urlretrieve("http://www.google.com/", "somefile.html", lambda x,y,z:0, urllib.urlencode({"username": "xxx", "password": "pass"}))
1
L'esempio Mechanize come suggerito sembra lavorare. Nei campi di immissione in cui è necessario immettere il testo, usare qualcosa come:
br["kw"] = "rowling" # (the method here is __setitem__)
Se qualche contenuto viene generato dopo aver inviato il modulo, come in un motore di ricerca, si ottiene tramite:
print response.read()
12
Avere un'occhiata a questo esempio che utilizzano Mechanize: darà l'idea di base:
#!/usr/bin/python
import re
from mechanize import Browser
br = Browser()
# Ignore robots.txt
br.set_handle_robots(False)
# Google demands a user-agent that isn't a robot
br.addheaders = [('User-agent', 'Firefox')]
# Retrieve the Google home page, saving the response
br.open("http://google.com")
# Select the search box and search for 'foo'
br.select_form('f')
br.form[ 'q' ] = 'foo'
# Get the search results
br.submit()
# Find the link to foofighters.com; why did we run a search?
resp = None
for link in br.links():
siteMatch = re.compile('www.foofighters.com').search(link.url)
if siteMatch:
resp = br.follow_link(link)
break
# Print the site
content = resp.get_data()
print content
Problemi correlati
- 1. Esegui uno script Python dal Web
- 2. Chiamare una funzione C++ tramite uno script Python
- 3. Come eseguire script Python nella pagina web
- 4. Come posso installare i moduli Python in modo programmatico/tramite uno script Python?
- 5. Modulo HTML POST a uno script Python?
- 6. Come ottenere JSON dalla pagina web in script Python
- 7. Come posso passare i parametri in uno script PHP attraverso una pagina web?
- 8. Web-ifing uno script da riga di comando Python?
- 9. Esegui uno script python al clic del pulsante
- 10. Compila modulo utilizzando i dati di Facebook
- 11. Avvio di uno script python tramite un collegamento simbolico
- 12. Conversione di uno script python in un'applicazione Web
- 13. Invia dati tramite modulo web ed estrai i risultati
- 14. TortoiseSVN tramite uno script proxy
- 15. Come testare uno script Greasemonkey, in particolare su una copia locale di una pagina Web?
- 16. Salta L'esecuzione del caso di test in Maven non compila nemmeno i casi di test
- 17. Come visualizzare continuamente l'output di Python in una pagina Web?
- 18. Come posso chiamare uno script python da uno script python
- 19. dove mettere freeze_support() in uno script Python?
- 20. Passare i dizionari a uno script Python tramite la riga di comando
- 21. Django, ajax compila il modulo con i dati del modello
- 22. Connessione al database tramite proxy uno script python
- 23. Denominazione dei campi modulo in una pagina Web
- 24. Chiamare una funzione python da uno script bash
- 25. inserisci un BLOB tramite uno script sql?
- 26. Test di stress del sito Web in Python - Django
- 27. Terminare uno script python da un altro script python
- 28. esecuzione di uno script Python da PHP
- 29. Caricamento di una pagina Web tramite UIWebView con parametri POST
- 30. Django imposta i valori predefiniti del modulo
mi sono bloccato con Python 2.6, però, così tristemente Mechanize non è una scelta possibile. (GopherError è sceso in 2.6, sembra). – Habaabiai
Mechanize doc è di solito un po 'laconico, ma funziona davvero molto bene! –
Penso che dovresti insistere, prova a eseguire il debug del problema gopher. In python 2.6, il supporto gopher è stato rimosso IIRC, quindi il problema è probabilmente relativo al commento di alcune gopherlib di importazione e ai pochi punti in cui viene effettivamente utilizzato gopher. –