我正在使用dryscrape从不同的页面抓取一些HTML数据。这都是django应用程序的一部分,但我发现在使用pythonshell时也会出现这个问题。第二次连接有问题。我用的是:
Python 2.7.6 (default, Mar 4 2014, 13:14:52)
dryscrape Version: 0.9
webkit-server Version: 1.0
xvfbwrapper Version: 0.2.5
下面你可以看到我如何使用它
^{pr2}$现在一切都好。但如果我想继续的话
...
In [8]: x.stop()
In [9]: x = Xvfb()
In [10]: x.start()
In [11]: session = dryscrape.Session(base_url='http://google.com')
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-11-6cbe39a8459d> in <module>()
----> 1 session = dryscrape.Session(base_url='http://google.com')
/home/mefioo/public_html/kariera_naukowa/env/lib/python2.7/site-packages/dryscrape/session.pyc in __init__(self, driver, base_url)
16 driver = None,
17 base_url = None):
---> 18 self.driver = driver or DefaultDriver()
19 self.base_url = base_url
20
/home/mefioo/public_html/kariera_naukowa/env/lib/python2.7/site-packages/dryscrape/driver/webkit.pyc in __init__(self, **kw)
28 def __init__(self, **kw):
29 kw.setdefault('node_factory_class', NodeFactory)
---> 30 super(Driver, self).__init__(**kw)
/home/mefioo/public_html/kariera_naukowa/env/lib/python2.7/site-packages/webkit_server.pyc in __init__(self, connection, node_factory_class)
228 node_factory_class = NodeFactory):
229 super(Client, self).__init__()
--> 230 self.conn = connection or ServerConnection()
231 self._node_factory = node_factory_class(self)
232
/home/mefioo/public_html/kariera_naukowa/env/lib/python2.7/site-packages/webkit_server.pyc in __init__(self, server)
505 def __init__(self, server = None):
506 super(ServerConnection, self).__init__()
--> 507 self._sock = (server or get_default_server()).connect()
508 self.buf = SocketBuffer(self._sock)
509 self.issue_command("IgnoreSslErrors")
/home/mefioo/public_html/kariera_naukowa/env/lib/python2.7/site-packages/webkit_server.pyc in connect(self)
438 """ Returns a new socket connection to this server. """
439 sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
--> 440 sock.connect(("127.0.0.1", self._port))
441 return sock
442
/usr/local/lib/python2.7/socket.pyc in meth(name, self, *args)
222
223 def meth(name,self,*args):
--> 224 return getattr(self._sock,name)(*args)
225
226 for _m in _socketmethods:
error: [Errno 111] Connection refused
我只是举个例子,因为在我的django应用程序中,它是视图逻辑的一部分,第二次请求该视图会导致此错误。重新启动django服务器或pythonshell可以解决这个问题,但只适用于第一次连接,所以对于工作网页来说这是无用的。我是否遗漏了一些“干净”或“重启”的X会话,或webkit服务器(capibara webkit)在这两者之间?在
好吧,这不是一个“真正的”答案,因为我仍然不知道是什么错,但我找到了一个方法让这个工作。我已经将dryscrape升级到1.0,并使用了它的新方法
dryscrape.start_xvfb()
,而不是xvfbwrapperXvfb()
。一切都很好。在相关问题 更多 >
编程相关推荐