TwillとPythonを「Google App Engine」で実行できる1つのコードに組み合わせる方法は?

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

質問

Twillをコンピューターにインストールし(以前にPython 2.5をインストールした)、最近使用しています。

Pythonは私のコンピューターのディスクCにインストールされています:c: python25

Twillフォルダー(「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

このコードは、アカウントを持っている1つのWebサイトにログインし、そのWebサイトの他のページのHTMLコード(ログイン後にのみアクセスできる)を記録し、「結果という名前のファイルに保存するのに役立ちます。 txt」(もちろん、このコードを使用する前に、まず「ログイン」を実際のログイン、「私のパスワード」、「いくつかのウェブサイトのサインインページURL」、および「他のページのURL」に置き換える必要があります。そのウェブサイトは、そのウェブサイトの実際のURLと、そのウェブサイトのログインページのサインインフォームとして使用されるそのウェブサイトのフォームの番号を備えた2番目の2番目の2番目の番号が付いています)

このコードは、「Twill-0.9」フォルダーにある「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()

このコードは、「誰もスパムッシュの繰り返しを検査しない」というフレーズをMD5ダイジェストに変換するのに役立ちます。

さて、これらの2つのコードを「Google App Engine」で実行できる1つのPythonスクリプトにまとめるにはどうすればよいですか?

たとえば、「Google App Engine」からWebサイトにコードをログインし、そのWebサイトの別のページに移動し、HTMLコード(Twillコードが行うこと)を記録し、このHTMLコードをMD5 Digestに変換することを望みます。 (それが私の2番目のコードが行うことです)。それでは、これらの2つのコードを1つのPythonコードに組み合わせるにはどうすればよいですか?

Twillをインポートすることで何らかの形で行う必要がありますが、どうすればできますか? 「Google App Engine」によって実行されているPythonコード - インターネット上のどこかからTwillをインポートできますか?または、おそらく、Twillはすでに「Google App Engine」にインストールされていますか?


更新1:

(この更新は、Woobleの答えに対する私の応答です)

これがすべてのフォルダー(私の「Twill-0.9」フォルダー)のリストです。 __init__.pyファイル。 (このリストの一部のフォルダーは、他のフォルダー内にあり、このリストにも記載されています):

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: Twill-0.9 Twill

役に立ちましたか?

解決

アプリエンジンプロジェクトでサードパーティライブラリを使用するには、展開時にアプリケーションにそれらを含める必要があります。 Twillフォルダーをコピーします(1つを含むもの __init__.py)アプリケーションのフォルダーに展開します。

Twill Googleコードプロジェクトを見ると、Twillにはパッケージにその依存関係(パイピング、機械化など)が含まれているため、他のものを含める必要がない場合があります。

他のヒント

これが役立つ場合、Twillを使用してGoogle検索を実行する例を示します。 TwillとBeautifulSoupを使用してWebページを解析することを示しています。

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

Twillが何をするのかわからない(まあ、グーグル)が、Appengineが提供する fetch() 働き Webページを取得するために使用できます。また、ログインのPOSTメソッドなどをサポートしています。

(Appengineにはセキュリティ上の理由で利用可能なPythonライブラリが限られているため、TwillがAppengineで機能するのは疑わしいです。ただし、推測だけです。)

Twillモジュールをアプリエンジンにインポートする方法を探していると思います。 Twill Pythonファイルがどこにあるか、またはWebサイトでパッケージ化するソースパッケージを取得する方法を把握する必要がありますが、サードパーティモジュールをインポートすることは、いくつかの例外を除いて実行できるようです。

試す zipimport Googleのサイトからの指示に従ってください ここここ.

Googleのサードパーティライブラリページから:

App Engineは、標準の実装ではなく、Zipimport機能のカスタムバージョンを使用します。通常、通常の方法で機能します。ZIPアーカイブをSys.Pathに追加し、通常どおりインポートします。これらの例外を除いて、Zipimportは、アーカイブに保存されているモジュールのみを.pyソースファイルとしてインポートできます。 .pycまたは.pyoファイルとして保存されているモジュールをインポートすることはできません。 Zipimportは純粋なPythonで実装されており、減圧にネイティブコードを使用しません(Cコード)。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top