Как я могу вставить все команды Twild вместе в один кусок кода в файл .py?
Вопрос
Я только начал изучать Твиль.
Twill - это удивительный язык сценариев для просмотра веб-просмотра, и он делает все, что я хочу !!!
Пока я использовал Twill от Python Shell (Холостой (Python GUI) Быть точным) и я делаю вещи там на пути выполнения команд один за другим (я имею в виду, я введите одну команду, запустите ее, затем введите следующую команду):
(источник: narod.ru.)
(источник: narod.ru.)
(источник: narod.ru.)
(источник: narod.ru.)
(источник: narod.ru.)
(источник: narod.ru.)
(источник: narod.ru.)
Но я не знаю, как поставить все эти команды вместе в одном .py файл, чтобы все могли быть выполнены по одному на один.
Похоже, что есть такая возможность в твиле. Этот пример с страницы документации Twill (вы можете увидеть это ЗДЕСЬ) показывает нам один кусок кода, состоящий из нескольких команд:
(источник: narod.ru.)
Итак, мой вопрос: как я могу поставить все команды вместе в Twill?
Обновление 1:
(Это обновление моего ответа на S.Mark)
Здравствуйте, S.mark !!! Я прошу прощения за поздний ответ. Прежде всего, некоторые данные о расположении моих папок Twill и Python, связанные с ними:
Путь, где Python2.5 установлен на моем компьютере: C: python25
Путь к моему Twill-0,9 на моем компьютере сейчас: E: TMP Twill-0,9
Допустим, я хочу, чтобы следующие команды были выполнены автоматически:
go http://www.yahoo.com
save_html result.html
Этот код должен посмотреть на страницу Yahoo, а затем сохранить свой HTML-код в результат .html файл. Таким образом, пытаясь следовать вашим инструкциям, я в первую очередь создал файл «test.txt», содержащий этот код, состоящий из 2 строк и сохранил этот файл как «test.twill» в папке Twill-0,9, что означает, что полный путь к этому файл сейчас был e: tmp twill-0.9 test.twill
Затем я попытался пройти имя файла в качестве параметра в команду twill-sh во многих разных способах, но он никогда не работал (я должен был делать что-то не так):
(источник: narod.ru.)
(источник: narod.ru.)
Но вы знаете, что я решил немного поэкспериментировать и создал файл Test.py, который также содержал только эти две команды. Этот файл я также разместил в папке Twill-0,9 (E: TMP Twill-0,9 est.py), а затем я решил попробовать запустить его из Twill Shool, используя команду runfile Twill, а удивительно, что работал! :
(источник: narod.ru.)
После его запуска я посмотрел на папку C: python25 и нашел вновь созданный результат .html файл там!
Ну, что я сделал здесь, просто запустил файл из конечной оболочки с помощью команды Twill. В то время как в данный момент именно то, что мне нужно, другие сторонники (как вы можете увидеть ниже) Предложите, что я должен делать все вещи из Python Shell, а не из Tooll Shool, и это то, что я до сих пор не знаю, как сделать.
Мой следующий шаг будет пытаться запустить аналогичный код на «Google App Engine», но там, насколько я знаю, только Python распознается, не Twill, что означает, что если я только знаю, как делать вещи в Twill, но только Не в Python я не смогу иметь «Двигатель Google App Engine», выполнив мои команды.
Обновление 2:
(Пятница 23 апреля 2010, 3:48:15 AM (GMT + 0,00))
(Это обновление - мой второй ответ на S.Mark)
Кажется, что запущено его из командной строки не успешно:
(источник: narod.ru.)
Решение
Поместите ваши команды Twild в файл, например, test.twill
setlocal query "twill Python"
go http://google.com/
fv 1 q $query
submit btnI # use the "I'm feeling lucky" button
show
А затем просто пройти имя файла в качестве параметра в команду twill-sh, как
python twill-sh test.twill
И вы, возможно, захотите проверить коды образцов .twill в tests
Папка Twill Source
test-back.twill
test-basic.twill
test-dns.twill
test-equiv-refresh.twill
test-find.twill
test-form.twill
test-formfill.twill
test-global-form.twill
test-go-exit.twill
....
Другие советы
Здесь он в действии (изменил бит Wee):
>>> import twill.commands
>>> import BeautifulSoup
>>>
>>> class browser:
... def __init__(self, url="http://www.google.com",log = None):
... 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.log = log
... self.b.clear_cookies()
... self.url=url
... def googleQuery(self, query="python code"):
... self.b.go(self.url)
... #self.b.showforms()
... f = self.b.get_form("f")
... #print "form is %s" % f
... f["q"] = query
... self.b.clicked(f, "btnG")
... self.b.submit()
... pageContent = self.b.get_html()
... soup=BeautifulSoup.BeautifulSoup(pageContent)
... ths = soup.findAll(attrs={"class" : "l"})
... for a in ths:
... print a
...
>>> t=browser()
>>> t.googleQuery("twill queries")
==> at http://www.google.ie/
Note: submit is using submit button: name="btnG", value="Google Search"
<a href="http://pyparsing.wikispaces.com/WhosUsingPyparsing" class="l" onmousedown="return clk(this.href,'','','res','1','','0CBMQFjAA')">pyparsing - WhosUsingPyparsing</a>
<a href="http://www.mail-archive.com/twill@lists.idyll.org/msg00048.html" class="l" onmousedown="return clk(this.href,'','','res','2','','0CBcQFjAB')">Re: [<em>twill</em>] <em>query</em>: docs, and web site.</a>
<a href="http://www.mail-archive.com/twill@lists.idyll.org/msg00050.html" class="l" onmousedown="return clk(this.href,'','','res','3','','0CBkQFjAC')">Re: [<em>twill</em>] <em>query</em>: docs, and web site.</a>
<a href="http://www.genealogytoday.com/surname/finder.mv?Surname=Twill" class="l" onmousedown="return clk(this.href,'','','res','4','','0CB4QFjAD')"><em>Twill</em> Genealogy and Family Tree Resources - Surname Finder</a>
<a href="http://a706cheap-apparel.hobby-site.com/ladies-cotton-faded-twill-le-chameau-breeks-42" class="l" onmousedown="return clk(this.href,'','','res','5','','0CCEQFjAE')">Ladies Cotton Faded <em>Twill</em> Le Chameau Breeks 42</a>
<a href="http://twill.idyll.org/examples.html" class="l" onmousedown="return clk(this.href,'','','res','6','','0CCMQFjAF')"><em>twill</em> Examples</a>
<a href="http://panjiva.com/Sri-Lankan-Manufacturers-Of/twill+capri" class="l" onmousedown="return clk(this.href,'','','res','7','','0CCcQFjAG')">Sri-Lankan <em>Twill</em> Capri Manufacturers | Sri-Lankan Suppliers of <b>...</b></a>
<a href="http://c586cheap-apparel.dyndns.ws/twill-beige-blazer" class="l" onmousedown="return clk(this.href,'','','res','8','','0CCoQFjAH')"><em>Twill</em> beige blazer</a>
<a href="http://stackoverflow.com/questions/2267537/how-do-you-use-relative-paths-for-twill-tests" class="l" onmousedown="return clk(this.href,'','','res','9','','0CCwQFjAI')">How do you use Relative Paths for <em>Twill</em> tests? - Stack Overflow</a>
<a href="http://mytextilenotes.blogspot.com/2010/01/introduction-to-twill-weave.html" class="l" onmousedown="return clk(this.href,'','','res','10','','0CC8QFjAJ')">My Textile Notes: Introduction to <em>Twill</em> Weave</a>
>>>
Я использую Ubuntu, поэтому я использую следующее для установки Beautifulsoup и Twill:
sudo apt-get install BeautifulSoup*
sudo apt-get install python-twill*
Как это помогает
А.
Я думаю, что вместо того, чтобы использовать корпус Twill, вы должны вместо этого следует напрямую вызывать функции, используя API Twill Python http://twill.idyll.org/python-api.html..
import string, re, sys, os
import twill.commands
class browser:
def __init__(self, url="www.google.com", query="python code", log = None):
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.log = log
self.b.clear_cookies()
self.url=url
self.b.go(self.url)
f = self.b.get_form("1")
# self.log.debug("form is %s" % f)
f["q"] = query
self.b.submit()
self.log.debug( "Links\n%s" % self.b.showlinks())
self.log.debug( "Forms\n%s" % self.b.showforms())
pageContent = self.b.get_html()
self.log.debug("html is <<%s>>" % pageContent)