Как объединить Twill и Python в один код, который может быть запущен на «Двигатель Google App»?

StackOverflow https://stackoverflow.com/questions/2717325

Вопрос

Я установил Twill на своем компьютере (ранее установил Python 2.5) и использовал его недавно.

Python установлен на диске C на моем компьютере: C: python25

А папка из ткани («Twill-0,9») здесь находится: E: TMP Twill-0,9

Вот код, который я использовал в Twill:

go “some website’s sign-in page URL”
formvalue 2 userid “my login”
formvalue 2 pass “my password”
submit
go “URL of some other page from that website”
save_html result.txt

Этот код поможет мне войти в один веб-сайт, в котором у меня есть учетная запись, записываем HTML-код какой-то другой страницы этого сайта (что я могу получить доступ только после входа в систему), и хранить его в файле с именем «Результат». TXT "(Конечно, перед использованием этого кода мне сначала нужно заменить« мой логин »с моим реальным входом в систему,« мой пароль »с моим действительным паролем« URL-адрес входа в систему Webse - URL-адрес какой-то другой страницы от этот сайт "с реальными URL-адресами этого сайта и номер 2 с количеством формы на этом сайте, который используется в качестве формы входа в систему на странице входа в систему.

Этот код I хранит в файле «TEST.TWILL», который находится в папке «TEST.TWILL»: E: TMP Twill-0.9 Test.twill Я запускаю этот файл из моей командной строки: Python Twill-Sh Test. твиль

Теперь я также установил «Google App Engine SDK» из «Google App Engine» и также использовал его на некоторое время.

Например, я использовал этот код:

import hashlib
m = hashlib.md5()
m.update("Nobody inspects")
m.update(" the spammish repetition ")
print m.hexdigest()

Этот код помогает мне преобразовать фразу «никто не проверяет повторение« Спамис »в Digest MD5.

Теперь, как я могу надеть эти два куска кода вместе в один сценарий Python, который я мог бы работать на «Двигатель Google App»?

Допустим, я хочу, чтобы мой код войти в веб-сайт из «Google App Engine», перейдите на другую страницу на этом веб-сайте, записывайте свой HTML-код (вот что делает мой код Twill) и чем преобразовать этот HTML-код в его дайджеп MD5 (Это то, что делает мой второй код). Итак, как я могу объединить эти два кода в один код Python?

Я думаю, это должно быть сделано как-то, импортируя Twill, но как это можно сделать? Может ли код Python - тот, который управляет «Двигатель Google App - импортировать Twill от где-то в Интернете? Или, возможно, Twill уже установлен на «Двигатель App Google»?


Обновление 1:

(Это обновление - мой ответ на ответ Wooble)

Вот список всех папок (в моей папке «Twill-0,9»), которые содержат __init__.py файлы. (Некоторые папки в этом списке расположены внутри других папок, которые также упоминаются в этом списке):

E: Twill-0.9 build lib twill Расширения match_parse

E: Twill-0,9 Build lib twill Расширения

E: Twill-0.9 build lib twill indow_packages _mechanize_dist

E: Twill-0.9 build lib twill indow_packages

E: Twill-0.9 build lib twill

E: Twill-0.9 Twill Extensions Match_Parse

E: Twill-0.9 Twill Расширения

E: twill-0.9 twill indow_packages _mechanize_dist

E: Twill-0.9 Twill indow_packages

E: Twill-0.9 Twill

Это было полезно?

Решение

Чтобы воспользоваться сторонними библиотеками в проектах App Engine, вам просто необходимо включить их с вашим приложением при развертывании. Скопируйте папку Tools (тот, который содержит __init__.pyВ папке вашего приложения и разверните ее.

Глядя на проект кода Twild Google, появляется, что Twill включает в себя свои зависимости (Pyparding, Mechanize и т. Д.) В упаковке, поэтому вам, возможно, не нужно включать все остальное.

Другие советы

Вот пример использования Twill для запуска поиска Google, если это поможет. Он показывает, используя Twill и Beautifulsoup, чтобы разбирать веб-страницы:

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

Не имею представления, что делает твил (ну, гугла), но предлагает AppEngine fetch() функция который можно использовать для получения веб-страниц. Он также поддерживает метод post, например, для логинов.

(Я сомневаюсь, что Twill работает в AppEngine, потому что AppEngine имеет ограниченные библиотеки Python, доступные для соображений безопасности. Просто догадайся, хотя.)

Я верю, что вы ищете способ импортировать модуль Twill в App-Engine. Вам придется выяснить, где есть файлы Python Thild Python или как получить исходный пакет из них, чтобы упаковать его с вашим веб-сайтом, но похоже, что импортируя 3-я вечеринка модулей можно сделать с помощью нескольких исключений, см. Ниже.

Пытаться Zipimport. Следуя указаниям от сайта Google здесь а также здесь.

С страницы библиотеки Google от Google:

Приложение Engine использует пользовательскую версию функции Zipimport вместо стандартной реализации. Обычно это работает обычным способом: добавьте Zip Archive в Sys.petpath, затем импортировать как обычно. С помощью этих исключений: Zipimport может только импортировать модули, хранящиеся в архиве как .py Исходные файлы. Он не может импортировать модули, хранящиеся как .pyc или .pyo файлы. Zipimport реализуется в Pure Python и не использует нативный код для декомпрессии (C код).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top