2010-04-21 21 views
6

Acabo de instalar con éxito TWILL en mi computadora con la ayuda de un miembro de apoyo de "StackOverflow" (puede verificarlo HERE) y he intentado ejecutar uno de los ejemplos simples en la página de documentación de sarga (puede ver esa página HERE). Aquí está el ejemplo:¿Cómo iniciar sesión en un sitio web utilizando sarga instalada?

alt text http://roundcan.narod.ru/some_pics/19.jpg

Digamos que mi nombre de usuario es el www.slash.orglynxye 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:

alt text http://roundcan.narod.ru/some_pics/20.jpg

lo mismo sucede cuando intento introducir este código en mi terminal:

alt text http://roundcan.narod.ru/some_pics/21.jpg

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, ayudarme con esto?

Respuesta

4

que necesita para ejecutar esos comandos dentro de la cáscara de la tela cruzada, en lugar de Python Shell

D:\tmp\twill-0.9>python twill-sh 

-= Welcome to twill! =- 

current page: *empty page* 
>>

Usted puede poner comandos sarga cuando vea >>

o hay 2 sólo las líneas en el archivo de sarga-sh

import twill.shell 
twill.shell.main() 

puedes copiar pegar esas 2 líneas al prompt de Python.

>>>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* 
>>
+0

Hola, S.Mark !!! ¿Sabes dónde podría estar ubicado ese caparazón de sarga? Hay un archivo llamado "twill-sh" en mi carpeta "twill-0.9". ¿Es ese el caparazón de sarga? Extraño, está en blanco, quiero decir, no tiene extensión. – brilliant

+1

Hola, sí, corro como 'python twill-sh' – YOU

+0

@brilliant, he actualizado mi respuesta. – YOU

0

Los corchetes angulares no están destinados a ser introducido literalmente; solo están ahí para indicar que debes ingresar un valor. Trate

setlocal username lynxye

lugar.

+0

Acabo de intentar - obtuve el mismo mensaje de error de sintaxis. – brilliant

3

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 html

+0

Thakn You, amadain !!! ¿Puedes, por favor, decirme qué hace la segunda línea de tu código (>>> importar re)? – brilliant

+1

import reimportar el módulo de expresiones regulares. ¿No estás acostumbrado a Python? Sugeriría que corras a través del tutorial en www.python.org. Es un muy buen tutorial para comenzar con python – amadain

+0

Gracias, amadain !!! Sí, solo soy un principiante en Python. Gracias por referirme a ese tutorial. ¡Allí se explican muchas de mis preguntas! – brilliant

0

Esa no es la manera de utilizar en el símbolo.

necesitará englobar par clave-valor entre paréntesis.Al igual que,

setlocal ('uname', 'xyz')

setlocal ('contraseña', '123')

go (' http://abc.org ')

fv (' 1' , 'foo', 'bar')

Cuestiones relacionadas