Wie man eine Website einzuloggen mit installiert Köper?
Frage
Ich habe gerade erfolgreich installiert TWILL auf meinem Computer mit Hilfe eines sehr unterstützende Mitglied der „Stackoverflow“ (Sie können es aus HIER ). Hier ist das Beispiel:
(Quelle: narod.ru )
sagen wir meinen Benutzernamen auf www.slash.org ist lynxye und mein Passwort ist säugetier . Wenn ich versuche, diesen Beispiel-Code in meinen Python-Prompt eingeben, kann ich nur geben und die erste Zeile der Codes eingeben, denn wenn ich auf „Enter“, um eine neue Zeile zu beginnen, ich sofort einige Fehlermeldungen erhalten:
(Quelle: narod.ru )
Das gleiche passiert, wenn ich versuche, diesen Code in meinen Terminal eingeben:
(Quelle: narod.ru )
Ich glaube, ich hier auf einige Grundlagen fehlen. Vielleicht brauche ich eine Datei zu erstellen, den Code enthalten würde und führen Sie dann die Datei irgendwie, aber ich weiß wirklich nicht, wo ich diese Datei erstellen muß und mit welcher extensdion.
Kann mir jemand bitte helfen Sie mir mit diesem?
Lösung
Sie müssen diese Befehle in Twill-Shell anstelle von Python-Shell laufen
D:\tmp\twill-0.9>python twill-sh
-= Welcome to twill! =-
current page: *empty page*
>>
Sie können Twill-Befehle setzen, wenn Sie sehen >>
oder gibt es 2 nur Linien in Twill-sh-Datei
import twill.shell
twill.shell.main()
Sie können kopieren nur, dass zwei Zeilen Python einfügen prompt.
>>> 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*
>>
Andere Tipps
Das wird es tun:
>>> 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
>>>
Es ist auch einfacher, wenn Sie BeautifulSoup verwenden analysieren die html
Die spitzen Klammern sind nicht wörtlich eingegeben werden soll; Sie sind nur da, um anzuzeigen, Sie einen Wert eingeben soll. Versuchen
setlocal username lynxye
statt.
Das ist nicht die Art und Weise prompt zu verwenden.
Sie müssen Schlüssel-Wert-Paar in Klammern einzuschließen. Wie,
setlocal ( 'uname', 'xyz')
setlocal ( 'Passwort', '123')
gehen ( ' http://abc.org ')
fv ( '1', 'foo', 'bar')