5

mechanize + Google App Engine に関する以前の質問を認識してい ます。ウェブサイトをスクレイピングするには、どの純粋な Python ライブラリを使用する必要がありますか? Mechanize と Google App Engine 。

また、ここにいくつかのコードがありますが、これはアプリエンジンで動作することができず、スローされます

File “D:\data\eclipse-php\testpy4\src\mechanize\_http.py”, line 43, in socket._fileobject(”fake socket”, close=True)
File “C:\Program Files (x86)\Google\google_appengine\google\appengine\dist\socket.py”, line 42, in _fileobject
fp.fileno = lambda: None
AttributeError: ’str’ object has no attribute ‘fileno’
INFO 2009-12-14 09:37:50,405 dev_appserver.py:3178] “GET / HTTP/1.1″ 500 -

作業中の機械化 + appengine コードを共有してくれる人はいますか?

4

3 に答える 3

10

私はこの問題を解決しました。mechanize._http.py の 43 行目あたりのコードを次のように変更するだけです。

try:
    socket._fileobject("fake socket", close=True)
except TypeError:
    # python <= 2.4
    create_readline_wrapper = socket._fileobject
else:
    def create_readline_wrapper(fh):
        return socket._fileobject(fh, close=True)

に:

try:
    # fixed start -- fixed for gae
    class x:
        pass

    # the x should be an object, not a string,
    # This is the key
    socket._fileobject(x, close=True)
    # fixed ended
except TypeError:
    # python <= 2.4
    create_readline_wrapper = socket._fileobject
else:
    def create_readline_wrapper(fh):
        return socket._fileobject(fh, close=True)
于 2010-01-13T12:23:29.387 に答える
1

MStodd のおかげで、GAEMechanize プロジェクトhttp://code.google.com/p/gaemechanize/から、GAE で実行される機械化コードを取得できました。

コードが必要な場合は、MStodd に連絡してください。

ps: コードは Google コードにないため、所有者に連絡する必要があります..

乾杯ドン

于 2009-12-15T16:54:04.957 に答える
0

gaemechanizeプロジェクトのソースを新しいプロジェクトにアップロードしました:http ://code.google.com/p/gaemechanize2/

通常の警告を挿入します。

于 2010-10-22T11:22:27.483 に答える