2009-12-14 5 views
5

Ich bin mir dessen bewusst vorherigen Fragen zu mechanize + Google App Engine, What pure Python library should I use to scrape a website? und Mechanize and Google App Engine.Python Mechanize + GAEpython Code

Auch gibt es einige Code here, die ich nicht auf App Engine erhalten können zu arbeiten, ist

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 - 

warf jemand bereit, ihre Arbeits mechanize + appengine Code zu teilen?

Antwort

1

schaffte ich Code mechanisieren zu erhalten, die auf GAE läuft, vielen Dank an MStodd, von GAEMechanize Projekt http://code.google.com/p/gaemechanize/ und

Wenn jemand den Code benötigt, können Sie sich an MStodd!

ps: der Code nicht auf Code Google, so dass Sie den Besitzer kontaktieren ..

Prost don

10

Ich habe dieses Problem gelöst, nur den Code von mechanize._http.py ändern , um die Linie 43, aus:

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) 

zu:

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

danke! - Für mich gearbeitet – hoju

+10

Dies muss derzeit in _urllib2_fork.py gehen – hoju

+0

Wenn Sie versuchen, es jetzt zu tun (Dezember 2011) ist es nicht in der gleichen Datei, sondern in Urllib2 – lc2817