在第一次启动后创建新会话时,dryscrap连接被拒绝

2024-09-29 21:35:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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)在这两者之间?在


Tags: inselfurlhomebaseserverinitlib
1条回答
网友
1楼 · 发布于 2024-09-29 21:35:25

好吧,这不是一个“真正的”答案,因为我仍然不知道是什么错,但我找到了一个方法让这个工作。我已经将dryscrape升级到1.0,并使用了它的新方法dryscrape.start_xvfb(),而不是xvfbwrapperXvfb()。一切都很好。在

相关问题 更多 >

    热门问题