0

我已经在我的电脑上安装了斜纹布(之前安装了 Python 2.5)并且最近一直在使用它。

Python安装在我电脑的C盘:C:\Python25

斜纹文件夹(“twill-0.9”)位于此处:E:\tmp\twill-0.9

这是我一直在斜纹布中使用的代码:

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 代码(我只能在登录后访问),并将其存储在名为“result.txt”的文件中。 txt”(当然,在使用此代码之前,我首先需要将“我的登录名”替换为我的真实登录名,“我的密码”替换为我的真实密码,“某个网站的登录页面 URL”和“来自其他页面的 URL该网站”带有该网站的真实 URL,数字 2 是该网站上用作该网站登录页面上的登录表单的表单编号)

我将这段代码存储在“twill-0.9”文件夹中的“test.twill”文件中:E:\tmp\twill-0.9\test.twill 我从命令提示符运行这个文件:python twill-sh test。斜纹布

现在,我也从“Google App Engine”安装了“Google App Engine SDK”,并且已经使用了一段时间。

例如,我一直在使用这段代码:

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

这段代码帮助我将短语“没有人检查垃圾邮件重复”转换为 md5 摘要。

现在,我如何将这两段代码放在一个可以在“Google App Engine”上运行的 Python 脚本中?

比方说,我希望我的代码从“Google App Engine”登录到一个网站,转到该网站上的另一个页面,记录其 HTML 代码(这就是我的斜纹代码所做的),然后将此 HTML 代码转换为它的 md5 摘要(这就是我的第二个代码所做的)。那么,如何将这两个代码组合成一个 python 代码呢?

我想,它应该以某种方式通过进口斜纹布来完成,但是怎么做呢?python 代码——由“Google App Engine”运行的代码——可以从互联网上的某个地方导入斜纹布吗?或者,也许斜纹已经安装在“Google App Engine”上?


更新1:

(此更新是我对 Wooble 的回答的回应)

这是包含__init__.py 文件的所有文件夹的列表(在我的“twill-0.9”文件夹中)。(此列表中的某些文件夹位于此列表中也提到的其他文件夹中):

E:\twill-0.9\build\lib\twill\extensions\match_parse

E:\twill-0.9\build\lib\twill\extensions

E:\twill-0.9\build\lib\twill\other_packages\_mechanize_dist

E:\twill-0.9\build\lib\twill\other_packages

E:\twill-0.9\build\lib\twill

E:\twill-0.9\twill\extensions\match_parse

E:\twill-0.9\twill\extensions

E:\twill-0.9\twill\other_packages\_mechanize_dist

E:\twill-0.9\twill\other_packages

E:\斜纹-0.9\斜纹

4

4 回答 4

3

如果有帮助,这里是使用斜纹布运行谷歌搜索的示例。它展示了使用 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>
>>>  
于 2010-05-20T16:05:07.823 回答
1

不知道斜纹布是做什么的(好吧,谷歌搜索),但 AppEngine 提供了可用于获取网页的fetch()功能。它还支持 POST 方法,例如用于登录。

(我怀疑斜纹在 AppEngine 中是否有效,因为出于安全原因,AppEngine 提供的 python 库有限。不过,只是猜测。)

于 2010-04-26T22:38:34.977 回答
1

我相信您正在寻找一种将斜纹模块导入 App-Engine 的方法。您必须弄清楚斜纹 python 文件在哪里,或者如何获取它们的源包以将其与您的网站打包,但看起来导入 3rd 方模块可以完成一些例外,见下文。

按照此处此处Google 网站的说明尝试ZipImport

来自谷歌的第三方图书馆页面:

App Engine 使用自定义版本的 zipimport 功能而不是标准实现。它通常以通常的方式工作:将 Zip 存档添加到 sys.path,然后照常导入。除了这些例外: zipimport 只能将存储在存档中的模块导入为 .py 源文件。它无法导入存储为 .pyc 或 .pyo 文件的模块。zipimport 是用纯 Python 实现的,不使用本机代码进行解压(C 代码)。

于 2010-04-26T22:47:14.583 回答
1

要在 App Engine 项目中使用第三方库,您只需在部署时将它们包含在您的应用程序中。将斜纹文件夹(包含__init__.py的文件夹)复制到应用程序的文件夹中并部署它。

查看 twill Google Code 项目,似乎 twill 在包中包含其依赖项(pyparsing、mechanize 等),因此您可能不需要包含其他任何内容。

于 2010-04-26T23:33:38.273 回答