J'utilise dryscrape pour récupérer des données HTML de différentes pages. Tout cela fait partie d'une application django, mais j'ai trouvé que ce problème apparaissait lors de l'utilisation de shell python. Problème avec la deuxième connexion. J'utilise:dryscrape - connexion refusée lors de la création d'une nouvelle session après la première
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
Ci-dessous vous pouvez voir comment je sens que l'utiliser
Python 2.7.6 (default, Mar 4 2014, 13:14:52)
Type "copyright", "credits" or "license" for more information.
IPython 2.1.0 -- An enhanced Interactive Python.
? -> Introduction and overview of IPython's features.
%quickref -> Quick reference.
help -> Python's own help system.
object? -> Details about 'object', use 'object??' for extra details.
In [1]: import dryscrape
In [2]: from xvfbwrapper import Xvfb
In [3]: x = Xvfb()
In [4]: x.start()
In [5]: session = dryscrape.Session(base_url='http://google.com')
In [6]: session.visit('')
In [7]: session.url()
Out[7]: u'http://www.google.pl/?gfe_rd=cr&ei=d95qVvLfFc2v8wfamoG4Aw'
In [8]: x.stop()
Tout va bien pour l'instant. Mais si j'essaie de continuer, avec une autre session
...
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
Je le fais simplement par exemple, parce que dans mon application django cela fait partie de la logique de vue, et en demandant que la deuxième fois vue résultats dans cette erreur. Le redémarrage du serveur django ou du shell python résout le problème, mais uniquement pour la première connexion, il est donc inutile de travailler sur une page Web. Ai-je manqué un "nettoyage" ou un "redémarrage" de la session X, ou un serveur webkit (capibara-webkit) entre ces deux?