6

我刚刚在“StackOverflow”的一位非常支持成员的帮助下成功在我的计算机上安装了TWILL(你可以在这里查看)并尝试在斜纹文档页面上运行一个简单的示例(你可以看到那个页面在这里)。这是那个例子:

替代文字
(来源:narod.ru

假设我在www.slash.org上的用户名是lynxye,我的密码是哺乳动物。当我尝试将该示例代码输入到 Python 提示符中时,我只能键入并输入代码的第一行,因为当我单击“Enter”开始新行时,我会立即收到一些错误消息:

替代文字
(来源:narod.ru

当我尝试将此代码输入终端时也会发生同样的情况:

替代文字
(来源:narod.ru

我想我在这里错过了一些基础知识。也许,我需要创建一个包含该代码的文件,然后以某种方式运行该文件,但我真的不知道我需要在哪里创建该文件以及使用什么扩展名。

任何人都可以帮我解决这个问题吗?

4

4 回答 4

4

您需要在 twill shell 中运行这些命令,而不是 python shell

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

 -= Welcome to twill! =-

current page:  *empty page*
>>

看到的时候可以放斜纹命令>>

或者 twill-sh 文件中只有 2 行

import twill.shell
twill.shell.main()

您可以将那 2 行复制粘贴到 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*
>>
于 2010-04-21T04:02:56.477 回答
3

这会做到:

>>> 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  
>>>

如果您使用 BeautifulSoup 来解析 html,它也更容易

于 2010-05-20T20:02:31.653 回答
0

尖括号不是按字面意思输入的。他们只是在那里表明您应该输入一个值。尝试

setlocal username lynxye

反而。

于 2010-04-21T03:53:49.873 回答
0

这不是在提示中使用的方式。

您需要将键值对括在括号中。像,

setlocal('uname','xyz')

setlocal('密码','123')

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

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

于 2013-08-01T08:36:53.377 回答