5

我知道以前有关 mechanize + Google App Engine 的问题, 我应该使用什么纯 Python 库来抓取网站?机械化和谷歌应用引擎

这里还有一些代码,我无法在应用引擎上工作,抛出

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

我设法从 GAEMechanize 项目http://code.google.com/p/gaemechanize/

如果有人需要代码,您可以联系 MStodd !

ps:代码不在google code上,所以你必须联系所有者..

干杯不要

于 2009-12-15T16:54:04.957 回答
0

我已将 gaemechanize 项目的源代码上传到一个新项目:http ://code.google.com/p/gaemechanize2/

插入通常的警告。

于 2010-10-22T11:22:27.483 回答