Comment se connecter à un site Web en utilisant twill installé?
Question
Je viens installé avec succès SERGÉ sur mon ordinateur à l'aide d'un membre très favorable « StackOverflow » (vous pouvez le vérifier ICI ) et ont tenté d'exécuter l'un des exemples simples sur la page de documentation de sergé (vous pouvez voir cette page ICI ). Voici cet exemple:
(source: narod.ru )
Disons que mon nom d'utilisateur sur www.slash.org lynxye et mon mot de passe est mammifère . Lorsque je tente d'entrer ce code d'exemple dans mon prompt Python, je ne peux pas taper et entrer dans la première ligne du code, car lorsque je clique sur « Entrée » pour commencer une nouvelle ligne, je reçois des messages d'erreur tout de suite:
(source: narod.ru )
La même chose arrive lorsque je tente d'entrer ce code dans mon terminal:
(source: narod.ru )
Je pense que je manque sur quelques notions de base ici. , Je dois peut-être créer un fichier qui contient ce code, puis exécutez le fichier en quelque sorte, mais je ne sais vraiment pas où je dois créer ce fichier et avec ce que extensdion.
Quelqu'un peut-il, s'il vous plaît, aidez-moi avec ça?
La solution
Vous devez exécuter ces commandes à l'intérieur twill shell, au lieu de shell python
D:\tmp\twill-0.9>python twill-sh
-= Welcome to twill! =-
current page: *empty page*
>>
Vous pouvez mettre twill commandes lorsque vous voyez >>
ou il y a 2 lignes uniquement dans le fichier twill-sh
import twill.shell
twill.shell.main()
vous pouvez simplement copier-coller que 2 lignes à python rapide.
>>> 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*
>>
Autres conseils
Ça va le faire:
>>> 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
>>>
Il est aussi plus facile si vous utilisez BeautifulSoup pour analyser le code html
Les crochets ne sont pas destinés à être entré dans la lettre; ils sont juste là pour indiquer que vous devez entrer une valeur. Essayez
setlocal username lynxye
au lieu.
Ce n'est pas la façon d'utiliser dans l'invite.
Vous devez joindre paire valeur clé entre parenthèses. Comme,
setlocal ( 'uname', 'xyz')
setlocal ( 'mot de passe', '123')
go ( ' http://abc.org ')
fv ( '1', 'foo', 'bar')