通过pipelines.py

时间:2017-04-10 15:18:22

标签: scrapy

我的scrapy脚本是否写入了蜘蛛体中的MySQL数据库而不是通过pipelines.py?这会减慢蜘蛛的速度吗?请注意,我怀疑items.py

上列出了任何项目

跟进:如何以及何时调用pipelines.py?在yield语句之后会发生什么?

2 个答案:

答案 0 :(得分:1)

它在很大程度上取决于实现,但是如果以一种不会阻止过多的方式实现数据库编写,那么性能就不会有太大差异。

然而,有一个非常巨大的结构差异。 Scrapy的设计philosphy高度鼓励使用中间件和管道,以保持蜘蛛清洁和易于理解。

换句话说 - 蜘蛛位应该抓取数据,中间件应该修改请求和响应,管道应该通过一些外部逻辑管道返回数据(比如将它放入数据库或文件中)。

关于你的跟进问题:

  

如何以及何时调用pipelines.py?在yield语句之后会发生什么?

看看Architectual Overview documentation page,如果您想深入挖掘,您必须了解twisted异步框架,因为scrapy只是一个围绕它的大型智能框架。

答案 1 :(得分:1)

如果您希望获得最佳性能,请将项目存储在文件中(例如csv),并在爬网完成后将批量插入数据库。对于csv数据,您可以使用mysqlimport(请参阅MySQL bulk insert from CSV data files)。推荐的方法是在插入时不阻止。这将要求您使用使用Twisted RDBMS API

的管道