2009-12-14 5 views
5

Je suis au courant des questions précédentes concernant mécaniser + Google App Engine, What pure Python library should I use to scrape a website? et Mechanize and Google App Engine.Python Mechanize + code GAepython

Aussi il y a un code here, que je ne peux pas travailler sur le moteur d'application, lancer

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 - 

Quelqu'un est-il prêt à partager leur mécaniser de travail + code AppEngine?

Répondre

1

Je réussi à obtenir mécaniser code qui fonctionne sur GAE, un grand merci à MStodd, du projet GAEMechanize http://code.google.com/p/gaemechanize/ et

Si quelqu'un a besoin du code, vous pouvez contacter MStodd!

ps: le code est le code de Google, vous devez contacter le propriétaire ..

Vive don

10

J'ai résolu ce problème, il suffit de changer le code de mechanize._http.py , autour de la ligne 43, de:

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

merci! - a fonctionné pour moi – hoju

+10

cela doit actuellement aller dans _urllib2_fork.py – hoju

+0

Si vous essayez de le faire dès maintenant (déc 2011), il n'est pas dans le même fichier mais dans urllib2 – lc2817