scrapy自定义扩展(extensions)实现实时监控scrapy爬虫的运行状态
效果图: 废话 如何知道你写的爬虫有没有正常运行,运行了多长时间,请求了多少个网页,抓到了多少条数据呢?官方其实就提供了一个字典就包含一些抓取的相关信息:crawler.stats.get_stats(),crawler是scrapy中的一个组件。你可以在很多组件中访问他,比如包含from_crawler(cls, crawler)方法的所有组件。 既然能得到scrapy的运行状态,想要实时显示出来应该也很简单吧。同样是使用上一篇博客用到的influxdb+grafana来展示数据,我们只需要将scrapy的一些运行信息实时同步到influxdb这个数据库,就能通过grafana以图的形式来展示出数据库里的内容了。 写数据库 如何实时将字典同步到数据库呢?这里肯定要设定一个同步的时间间隔,假设是5秒。那么我们的需求就是让scrapy每5秒写一次爬虫运行状态的信息到数据库,上面提到能访问到crawler.stats.get_stats()这个的组件有很多,比如中间件、管道、爬虫。我们应该在哪个组件中同步信息? 这个我们可以先看一些内置的组件分别实现了什么功能,然后看和需求最相似的功能。很明显,功能最为合适的是extensions这个组件了,有很多人可能都没有用过这个组件,我在看很多博客都很少有提到这个组件的,因为这个组件能做的事,其他也能做,用它只是为了让分工更明确而已