Как войти на сайт, используя установленный твил? - PullRequest
6 голосов
/ 21 апреля 2010

Я только что успешно установил TWILL на свой компьютер с помощью одного из очень поддерживающих членов «StackOverflow» (вы можете проверить это ЗДЕСЬ ) и попытались запустить один из простых примеров на странице документации по твиллу (вы можете увидеть эту страницу ЗДЕСЬ ). Вот этот пример:

альтернативный текст http://roundcan.narod.ru/some_pics/19.jpg

Допустим, мое имя пользователя на www.slash.org равно lynxye , а мой пароль млекопитающее . Когда я пытаюсь ввести этот пример кода в приглашение Python, я могу только ввести и ввести первую строку кода, потому что когда я нажимаю «Enter», чтобы начать новую строку, я сразу получаю сообщения об ошибках:

альтернативный текст http://roundcan.narod.ru/some_pics/20.jpg

То же самое происходит, когда я пытаюсь ввести этот код в свой терминал:

альтернативный текст http://roundcan.narod.ru/some_pics/21.jpg

Я думаю, что мне здесь не хватает некоторых основ. Возможно, мне нужно создать файл, который будет содержать этот код, а затем каким-то образом запустить этот файл, но я действительно не знаю, где мне нужно создать этот файл и с каким расширением.

Может кто-нибудь, пожалуйста, помогите мне с этим?

Ответы [ 4 ]

4 голосов
/ 21 апреля 2010

Вам нужно запускать эти команды внутри оболочки twill вместо оболочки python

D:\tmp\twill-0.9><b>python twill-sh</b>

 -= Welcome to twill! =-

current page:  *empty page*
>>

Вы можете поместить команды саржи, когда увидите >>

или в файле twill-sh есть только 2 строки

import twill.shell
twill.shell.main()

Вы можете просто скопировать и вставить эти 2 строки в приглашение Python.

>>> <b>import twill.shell</b>
>>> <b>twill.shell.main()</b>

 -= Welcome to twill! =-

current page:  *empty page*
>> <b>?</b>

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*
>>
3 голосов
/ 21 мая 2010

Это будет сделано:

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

0 голосов
/ 01 августа 2013

Это не способ использовать в подсказке.

Вам необходимо заключить пару ключ-значение в скобки. Как,

SETLOCAL ( 'uname', 'хуг')

SETLOCAL ( 'пароль', '123')

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

бс ( '1', 'Foo', 'бар')

0 голосов
/ 21 апреля 2010

Угловые скобки не предназначены для буквального ввода;они просто указывают, что вы должны ввести значение.Попробуйте

setlocal username lynxye

вместо.

...