У меня есть паук, где я должен использовать Selenium для очистки динамических данных на странице. Вот как это выглядит:Как бросить водитель селена при закрытии паука
class MySpider(
name = 'myspider'
start_urls = ['http://example.org']
def __init__(self, *args, **kwargs):
super(, self).__init__(*args, **kwargs)
self.driver = webdriver.Firefox()
self.driver.implicitly_wait(5)
dispatcher.connect(self.spider_closed, signals.spider_closed)
def spider_closed(self, spider):
if self.driver:
self.driver.quit()
self.driver = None
Проблема здесь заключается в том, что, когда я отменить работу в Scrapyd он не остановится, пока я вручную закрыть окно. Я, очевидно, не смогу этого сделать, когда я развожу паук на реальный сервер.
Вот что я вижу в Scrapyd регистрирует каждый раз, когда я ударил «Отменить»:
2015-08-12 13:48:13+0300 [HTTPChannel,208,127.0.0.1] Unhandled Error
Traceback (most recent call last):
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/twisted/web/http.py", line 1731, in allContentReceived
req.requestReceived(command, path, version)
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/twisted/web/http.py", line 827, in requestReceived
self.process()
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/twisted/web/server.py", line 189, in process
self.render(resrc)
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/twisted/web/server.py", line 238, in render
body = resrc.render(self)
--- <exception caught here> ---
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/scrapyd/webservice.py", line 18, in render
return JsonResource.render(self, txrequest)
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/scrapy/utils/txweb.py", line 10, in render
r = resource.Resource.render(self, txrequest)
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/twisted/web/resource.py", line 250, in render
return m(request)
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/scrapyd/webservice.py", line 55, in render_POST
s.transport.signalProcess(signal)
File "/home/dmitry/.virtualenvs/myproject/local/lib/python2.7/site-packages/twisted/internet/process.py", line 339, in signalProcess
raise ProcessExitedAlready()
twisted.internet.error.ProcessExitedAlready:
Но работа по-прежнему в списке заданий и он отмечен как «Запуск». Итак, как я могу отключить драйвер?
Вы можете быть лучше использовать паука межплатформенное здесь. http://stackoverflow.com/a/24460462/2368836 – rocktheartsm4l