【问题标题】:When should I close the webdriver?我应该什么时候关闭网络驱动程序?
【发布时间】:2018-04-26 17:14:22
【问题描述】:

我使用 Scrapy 和 Selenium 进行抓取。

当我使用htop 运行我的蜘蛛时,我看到了我的网络驱动程序的实例。

我想知道何时应该在我的代码中关闭 webdriver?

def parse():
    # I have all links in my array_links
    for link in self.array_links:
        self.driver.get(link)

        # Here i Parse the products
        item = MyTestItem()
        item['test1'] = "test"
        yield item 

我在我的代码中添加了这个

def __del__(self):
    self.driver.quit()

脚本结束,但我不知道在获取每个链接后我应该close webdriver 吗?

谢谢,

【问题讨论】:

    标签: python selenium selenium-webdriver scrapy


    【解决方案1】:

    问题是。你在哪里打开它?

    如果您的网络驱动程序在蜘蛛的上下文中,那么理想情况下,您希望在蜘蛛打开时打开它,并在蜘蛛关闭时关闭它。

    您可以通过连接open_spider 和close_spider 信号来做到这一点:

    from scrapy import signals
    from scrapy import Spider
    
    
    class MySpider(Spider):
        name = "spideroo"
    
        @classmethod
        def from_crawler(cls, crawler, *args, **kwargs):
            spider = super().from_crawler(crawler, *args, **kwargs)
            crawler.signals.connect(spider.spider_closed, signal=signals.spider_closed)
            crawler.signals.connect(spider.spider_opened, signal=signals.spider_opened)
            return spider
    
        def spider_opened(self, spider):
            self.driver = selenium.WebDriver()  # or what's your driver's class is.
    
        def spider_closed(self, spider):
            self.driver.close()
    

    【讨论】:

    • 是的,我一开始就打开它,就在 name = "spideroo" 之后,所以我认为我所做的也是正确的。谢谢你的回答
    猜你喜欢
    • 2012-10-31
    • 1970-01-01
    • 2013-04-23
    • 2011-03-21
    • 2012-12-23
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多