2009-12-14 1 views
5

Мне знакомы предыдущие вопросы относительно механизации + Google App Engine, What pure Python library should I use to scrape a website? и Mechanize and Google App Engine.Python Mechanize + GAEpython code

Также есть некоторый код here, который я не могу заставить работать на приложение двигателя, выбрасывая

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 - 

Кто-нибудь готов поделиться своим рабочим Mechanize + код Appengine?

ответ

1

мне удалось механизировать код, который работает на GAE, большое спасибо MStodd, от проекта GAEMechanize http://code.google.com/p/gaemechanize/ и

Если кто-то нуждается в коде, вы можете связаться с MStodd!

пс: код не на Google Code, поэтому вы должны связаться с владельцем ..

Приветствия дон

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) 
+0

спасибо! - работал для меня – hoju

+10

это в настоящее время нужно зайти в _urllib2_fork.py – hoju

+0

Если вы попытаетесь сделать это на данный момент (декабрь 2011 года), это не в том же файле, но в urllib2 – lc2817