2009-12-14 18 views
5

Znam poprzednie pytania dotyczące mechanizmu + Google App Engine, What pure Python library should I use to scrape a website? i Mechanize and Google App Engine.Python Mechanize + kod GAEpython

Ponadto istnieje jakiś kod here, których nie mogę dostać się do pracy na App Engine rzucanie

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 - 

Czy ktoś chętny do dzielenia się swoją mechanize roboczy + kod AppEngine?

Odpowiedz

1

udało mi się dostać mechanizacji kod, który działa na GAE, wiele dzięki MStodd, od projektu GAEMechanize http://code.google.com/p/gaemechanize/ i

Jeśli ktoś potrzebuje kod, można skontaktować MStodd!

PS: kod nie jest na kodzie Google, więc trzeba skontaktować się z właścicielem ..

Cheers don

10

Mam rozwiązać ten problem, wystarczy zmienić kod mechanize._http.py około 43 zgodnie z:

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) 

do:

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

dzięki! - pracował dla mnie – hoju

+10

to obecnie musi iść w _urllib2_fork.py – hoju

+0

Jeśli spróbujesz zrobić to od teraz (grudzień 2011), to nie jest w tym samym pliku, ale w urllib2 – lc2817

Powiązane problemy