Python 2.7 Scrapy和Webkit一直冻结

Python 2.7 Scrapy和Webkit一直冻结,python-2.7,webkit,scrapy,Python 2.7,Webkit,Scrapy,我正在使用scrapy用JavaScript抓取一些网站。铲运机工作正常,但在任意地方都会结冰。我需要用ctrl+z终止脚本,但它只有在我使用这个下载程序中间件时才会冻结: from scrapy.http import Request, FormRequest, HtmlResponse import gtk import webkit import jswebkit class WebkitDownloader( object ): de

我正在使用scrapy用JavaScript抓取一些网站。铲运机工作正常,但在任意地方都会结冰。我需要用ctrl+z终止脚本,但它只有在我使用这个下载程序中间件时才会冻结:

 from scrapy.http import Request, FormRequest, HtmlResponse

    import gtk
    import webkit
    import jswebkit

    class WebkitDownloader( object ):
        def process_request( self, request, spider ):
            if( type(request) is not FormRequest ):
                webview = webkit.WebView()
                webview.connect( 'load-finished', lambda v,f: gtk.main_quit() )
                webview.load_uri( request.url )
                gtk.main()
                js = jswebkit.JSContext( webview.get_main_frame().get_global_context() )
                renderedBody = str( js.EvaluateScript( 'document.documentElement.innerHTML' ) )
                return HtmlResponse( request.url, body=renderedBody )
我试图通过打印中间件的每一个步骤来调试脚本,但运行良好。当我在终端看到这个时,它会冻结:

Message: console message: http://www.myurl.com/js/Shop.min.js?twsv=20140521122711 @642: JQMIGRATE: Logging is active
我尝试了不同的中间件和下载处理程序,但总是死机。我也检查了我的连接,但我看不到任何中断的模式或迹象。我使用的是最新版本的scrapy

2014-04-25-更新

当我让它运行几分钟时,我得到以下错误: 为GWakeup创建管道:打开的文件太多

GLib-ERROR **: Creating pipes for GWakeup: Too many open files
2014-05-27-更新


我对中间件中的每一行代码都进行了“打印”。当涉及到gtk.main()部分时,它会随机冻结代码和终端。当我在“冻结”期间使用lsof命令时,我可以看到一堆打开的“碎片”文件。冻结后,我的代码不会再次运行,直到我重置我的计算机。我想可能是某种错误导致了泄漏

我不知道你的gtk问题的解决方案,但是如果你想我有一些代码来解决这个javascript问题。嗨,WebkitDownloader解决方案从一开始就是有缺陷的。请与Scrapy一起使用飞溅。请考虑从你的解决方案中做出适当的反应,简单的可能是: