この「Python+Twill+機械化」の組み合わせを「Google App Engine」に展開する方法は?

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

質問

ログインとパスワードをから渡そうとしてきました Python のスクリプト eBay サインインページ。後で私はこのスクリプトをから実行したい」Googleアプリエンジン"

使用することが提案されました」機械化「。残念ながら、それは私にとってはうまくいきませんでした:


IDLE 1.2.4      
>>> import re
>>> import mechanize
>>> br = mechanize.Browser()
>>> br.open("https://signin.ebay.com")

Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    br.open("https://signin.ebay.com")
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 203, in open
    return self._mech_open(url, data, timeout=timeout)
  File "build\bdist.win32\egg\mechanize\_mechanize.py", line 255, in _mech_open
    raise response
httperror_seek_wrapper: HTTP Error 403: request disallowed by robots.txt
>>> 

以前に使用しようとしていました Pythonツイル - それはまでも機能しませんでした 1人のサポーターが提案しました の最新バージョンをダウンロードしてください 機械化 そして、次の手順を実行します。

  1. 私のコンピューターに次のフォルダーを見つけます。 "c: python25 lib site-packages twill other_packages _mechanize_dist"

  2. その名前を変更します」_MECHANIZE_DIST_BACKUP「(したがって、フルパスはあるべきです」c: python25 lib site-packages twill other_packages _mechanize_dist_backup")

  3. 「コピー」機械化「フォルダー(にあります」機械化-0.2.2「 - ダウンロードして解凍したフォルダー 「機械化」公式サイト))そしてそれを貼り付けます」c: python25 lib site-packages twill other_packages「(フルパス、したがって、存在」c: python25 lib site-packages twill other_packages mecanize")

  4. その名前を変更します」_MECHANIZE_DIST「(完全な道」c: python25 lib site-packages twill other_packages_mechanize_dist")

  5. コピー "クライアントフォーム「ファイル」_MECHANIZE_DIST_BACKUP「そしてそれを貼り付ける」_MECHANIZE_DIST「実際、私は2つのファイルという名前が見つかった」クライアントフォーム「:1つはPythonファイル、もう1つはコンパイルされたPythonファイルです。両方をコピーして貼り付けました)。

これらすべての手順を実行した後、私にログインしようとしました eBay からのアカウント ツイル シェルイン Python そしてそれはうまくいきました!!!私にログインすることさえできました Yahoo 同じ方法でメールボックスを入れて、メールをチェックしてください!

しかし今、私はジレンマを持っています:私は自分のスクリプトをどのように展開できるかわかりません」Googleアプリエンジン".

ついさっき 私はアドバイスされていました サードパーティライブラリを使用したい場合 アプリエンジン プロジェクト、私はそれを展開するときにアプリケーションにそれらを含める必要があります - ツイル, 、たとえば、私はただコピーする必要があります ツイル アプリケーションのフォルダーにフォルダーを展開し、展開します。

しかし今、私はこれを持っているだけではありません ツイル 含まれるサードパーティライブラリとしてのフォルダーだけでなく、これらのすべての変更も実行されます」c: python25" (の "c: python25 lib site-packages twill other_packages「、正確に言うと)私のアプリケーションフォルダー - 私が私のスクリプトを持っているもの(」my_script.py "file) - にあります」e「ディスク。

誰でも、ここでいくつかの提案をしてください。

役に立ちましたか?

解決

GAEの展開の問題については、 @Brilliant、あなたが扱っているコードはすべて純粋なPython 2.5であるように見えます(本当にブロッキングの問題はそれだけです そうではありません - バイナリ拡張は許可されておらず、Python 2.6以下の許可を必要とするコードはありません。

したがって、この仮定の下で、アプリエンジンにコードを展開する唯一の問題は、すべてのコードを持っていることです。 いいえsite-packages (もちろんゲーから dev_appserver.py Nada、Zilch)は絶対に何も展開しませんが、むしろGAEプロジェクトのディレクトリにあります(すべての.pyファイルの再帰的なジップをお勧めします。 zip -r それ;-)。

全体として、それはいくつかの適切なシェルコマンドの問題にすぎません。 cp -R それから zip -r (おそらく、非普通のシェルでは難しいですが、ちょっと、windowsでもあなたは できる CygwinからBashを使用してください...いずれにせよ、それはほとんど「開発」の問題ではありません、それ自体;-)。

他のヒント

エラーメッセージは、機械化がサイトのrobots.txtファイルに従っていることを示しています。

自動化された方法でサイトにアクセスする場合は、eBayのAPIを使用する必要があります。そうでない場合、Robots.txtを無視する独自のソリューションを構築した場合、彼らがあなたをブロックするとき、驚かないでください。また、アプリからアプリエンジンから来る自動クエリについてGoogleに不満を言います。

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