Cómo iniciar sesión en un sitio web utilizando sarga instalado?
Pregunta
Me acaba de instalar con éxito TWILL en mi ordenador con la ayuda de un miembro muy a favor de "stackoverflow" (se puede comprobar que funciona AQUÍ ) y han tratado de ejecutar uno de los ejemplos simples en la página de documentación de sarga (se puede ver que la página aquí ). Aquí está el ejemplo:
Digamos que mi nombre de usuario en www.slash.org es lynxye y mi contraseña es mamífero . Cuando trato de entrar en ese código de ejemplo en mi prompt de Python, sólo puedo escribir y entrar en la primera línea del código, porque cuando hago clic en "Enter" para iniciar una nueva línea, consigo algunos mensajes de error de inmediato:
Lo mismo sucede cuando intento introducir este código en mi terminal:
creo que no paso a algunos conceptos básicos aquí. Tal vez, lo que necesito para crear un archivo que contenga ese código y luego ejecutar ese archivo de alguna manera, pero realmente no sé dónde tengo que crear ese archivo y con qué extensdion.
Puede alguien, por favor, que me ayude con esto?
Solución
Tiene que ejecutar esos comandos en el interior de la tela cruzada de la cáscara, en vez de Python Shell
D:\tmp\twill-0.9>python twill-sh
-= Welcome to twill! =-
current page: *empty page*
>>
Usted puede poner la tela cruzada de los comandos cuando se ve >>
o hay sólo 2 líneas en el archivo de sarga-sh
import twill.shell
twill.shell.main()
sólo se puede copiar y pegar que las líneas 2 a Python del sistema.
>>> 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*
>>
Otros consejos
Esto lo hará:
>>> 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
>>>
También es más fácil si utiliza BeautifulSoup para analizar el código HTML
Los corchetes angulares no están destinados a ser introducido literalmente; que están ahí para indicar que debe introducir un valor. Trate
setlocal username lynxye
en su lugar.
Esa no es la manera de utilizar en el símbolo.
Se necesita para encerrar par clave-valor entre paréntesis. Al igual que,
setlocal ( 'uname', 'xyz')
setlocal ( 'password', '123')
go ( ' http://abc.org ')
fv ( '1', 'foo', 'bar')