インストールされたTwillを使用してWebサイトにログインする方法は?
質問
正常にインストールしました ツイル 「StackoverFlow」の非常に協力的なメンバーの1人の助けを借りて、私のコンピューターで(あなたはそれをチェックすることができます ここ)そして、Twillドキュメントページで簡単な例の1つを実行しようとしました(そのページを見ることができます ここ)。その例は次のとおりです。
(ソース: narod.ru)
私のユーザー名をオンにしましょう www.slash.org は lynxye そして私のパスワードはです 哺乳類. 。その例をPythonプロンプトに入力しようとすると、「入力」をクリックして新しい行を開始すると、すぐにエラーメッセージが表示されるため、コードの最初の行を入力して入力できます。
(ソース: narod.ru)
このコードを端末に入力しようとすると同じことが起こります。
(ソース: narod.ru)
ここでいくつかの基本を見逃していると思います。おそらく、そのコードを含むファイルを作成して、そのファイルを何らかの形で実行する必要がありますが、そのファイルを作成する必要がある場所と拡張機能を実際には知りません。
誰でもこれを手伝ってくれませんか?
解決
Pythonシェルの代わりに、Twill Shell内でそれらのコマンドを実行する必要があります
D:\tmp\twill-0.9>Python Twill-sh
-= Welcome to twill! =-
current page: *empty page*
>>
表示されたら、Twillコマンドを配置できます >>
または、Twill-Shファイルに2つのみの行があります
import twill.shell
twill.shell.main()
その2行をPythonプロンプトにコピーするだけです。
>>> 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*
>>
他のヒント
これはそれをします:
>>> 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
>>>
HTMLを解析するためにBeautifulSoupを使用する場合も簡単です
角度ブラケットは文字通り入力することを意図していません。彼らはあなたが値を入力する必要があることを示すためにただそこにいます。試す
setlocal username lynxye
代わりは。
それはプロンプトで使用する方法ではありません。
ブラケットにキー価値ペアを囲む必要があります。好き、
setlocal( 'uname'、 'xyz')
setlocal( 'password'、'123 ')
行く('http://abc.org')
fv( '1'、 'foo'、 'bar')