2009-12-14 20 views
5

Tôi biết các câu hỏi trước về mechanize + Google App Engine, What pure Python library should I use to scrape a website?Mechanize and Google App Engine.Cơ chế Python + mã GAEpython

Cũng có một số mã here, mà tôi không thể bắt đầu làm việc trên công cụ ứng dụng, ném

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 - 

Có ai sẵn sàng chia sẻ mechanize làm việc của họ + Mã appengine?

Trả lời

1

tôi quản lý để có được cơ giới hóa mã mà chạy trên GAE, nhiều nhờ MStodd, từ dự án GAEMechanize http://code.google.com/p/gaemechanize/

Nếu ai cần mã, bạn có thể liên hệ với MStodd!

ps: mã không phải là trên google mã, vì vậy bạn phải liên hệ với chủ sở hữu ..

Cheers don

10

Tôi đã giải quyết vấn đề này, chỉ cần thay đổi mã của mechanize._http.py , về dòng 43, từ:

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) 

tới:

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

cảm ơn! - đã làm việc cho tôi – hoju

+10

hiện tại bạn cần truy cập vào _urllib2_fork.py – hoju

+0

Nếu bạn cố gắng thực hiện ngay bây giờ (tháng 12 năm 2011), nó không có trong cùng một tệp nhưng trong urllib2 – lc2817

Các vấn đề liên quan