Come per accedere a un sito web utilizzando twill installato?
Domanda
Ho appena installato con successo TWILL sul mio computer con l'aiuto di un membro molto favorevole "StackOverflow" (è possibile controllarlo fuori QUI ) e hanno cercato di eseguire uno dei semplici esempi nella pagina di documentazione saia (si può vedere che la pagina QUI ). Ecco che l'esempio:
(fonte: narod.ru )
Diciamo che il mio nome utente su www.slash.org è lynxye e la password è mammifero . Quando provo ad entrare in quel codice di esempio nel mio Python pronta, posso solo scrivere e immettere la prima riga del codice, perché quando clicco su "Enter" per iniziare una nuova riga, ho alcuni messaggi di errore subito:
(fonte: narod.ru )
Lo stesso accade quando si tenta di inserire questo codice nel mio terminale:
(fonte: narod.ru )
penso di perdere su alcuni principi fondamentali qui. Forse, ho bisogno di creare un file che contiene il codice e quindi eseguire il file in qualche modo, ma io davvero non so dove ho bisogno di creare il file e con quale extensdion.
Qualcuno può, per favore, mi aiuto con questo?
Soluzione
È necessario eseguire questi comandi all'interno twill conchiglia, invece della shell python
D:\tmp\twill-0.9>python twill-sh
-= Welcome to twill! =-
current page: *empty page*
>>
Si può mettere in twill di comandi quando si vede >>
o v'è 2 solo righe nel file twill-sh
import twill.shell
twill.shell.main()
è possibile basta copiare e incollare che le 2 linee a Python pronta.
>>> import twill.shell
>>> twill.shell.main()
-= Welcome to twill! =-
current page: *empty page*
>> ?
Undocumented commands:
======================
add_auth fa info save_html title
add_extra_header find load_cookies setglobal url
agent follow notfind setlocal
back formaction redirect_error show
clear_cookies formclear redirect_output show_cookies
clear_extra_headers formfile reload show_extra_headers
code formvalue reset_browser showforms
config fv reset_error showhistory
debug get_browser reset_output showlinks
echo getinput run sleep
exit getpassword runfile submit
extend_with go save_cookies tidy_ok
current page: *empty page*
>>
Altri suggerimenti
Questo farò:
>>> import twill.commands
>>> import re
>>>
>>> class browser:
... def __init__(self, url="http://www.slashdot.org"):
... self.a=twill.commands
... self.a.config("readonly_controls_writeable", 1)
... self.b = self.a.get_browser()
... self.b.set_agent_string("Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14")
... self.b.clear_cookies()
... self.url=url
... def slashdot(self, loginName, passwd):
... self.b.go(self.url)
... f = self.b.get_form("1")
... regexp = re.compile("Log In")
... link = self.b.find_link(regexp)
... if link:
... self.b.follow_link(link)
... f=self.b.get_form("2")
... f["unickname"] = loginName
... f["upasswd"] = passwd
... self.a.fv("2", "userlogin", "")
...
>>>
>>> t=browser()
>>> t.slashdot("username", "password")
==> at http://slashdot.org/
==> at http://slashdot.org/my/login
forcing read-only form field to writeable
>>>
E 'anche più facile se si utilizza BeautifulSoup per analizzare il codice html
Le parentesi angolari non sono destinate ad essere inserito alla lettera; sono solo lì per indicare che si deve inserire un valore. Prova
setlocal username lynxye
, invece.
Non è questo il modo di utilizzare in pronta.
È necessario racchiudere coppia chiave-valore tra parentesi. Come,
setlocal ( 'uname', 'xyz')
setlocal ( 'password', '123')
go ( ' http://abc.org ')
fv ( '1', 'foo', 'bar')