我有很多scrapy蜘蛛使用scrapyd并行运行。我正在做的是类似下面的代码。
我的问题是,我真的需要为每只蜘蛛开始显示吗?驱动程序如何知道开始使用哪种显示?我是否应该全局启动一个显示并在同一个显示中启动多个webdriver实例?
def __init__(self):
dispatcher.connect(self.spider_closed, signals.spider_closed)
def spider_closed(self, spider):
if self.driver:
self.driver.quit()
if self.display:
self.display.stop()
def parse(self, response):
self.display = Display(visible=0, size=(1024, 768))
self.display.start()
self.driver = webdriver.Firefox()
self.driver.get(response.url)
page = Selector(text=self.driver.page_source)
# doing all parsing etc
答案 0 :(得分:3)
我建议使用splinter浏览器处理程序;它是硒的包裹物。它完全解决了您的问题,因为显示处理由包完成。
通过更多的软件包安装,您还可以完全取消对显示器的需求,这意味着分割器现在无头(浏览器窗口无法打开,而且速度更快)。查看Splinter docs以了解如何制作无头。我个人建议使用PhantomJS驱动程序,即使您必须安装非Python PhantomJS程序。