一起使用django和scrapy

时间:2014-02-04 05:09:07

标签: python django scrapy

我在Scrapy中有两个抓取工具,它从网站中删除一些数据,然后最终存储在数据库(sqlite3)中。现在我想使用Django进行管理。 Django必须管理爬虫,即激活,停用,删除等。同样,来自数据库的数据将在Django的admin中列出。并且所有爬虫都将从Django运行。到目前为止,我已经学会了如何在Django中使用自定义命令,但我无法弄清楚其余部分。任何人都可以帮我理解吗?我的代码是来自文档的简单教程。我已经按照链接

https://docs.djangoproject.com/en/1.6/intro/tutorial01/

任何人都可以帮我理解吗?这将是一个很大的帮助。谢谢!!

1 个答案:

答案 0 :(得分:2)

有两种方法可以同步或异步地管理这些抓取工具。

同步意味着用户或管理命令正在执行类似于scrapy crawl command中所做的事情,这种方法有三个缺点:

  1. 蜘蛛通常需要很长时间来完成他们的工作,而不是你希望网络用户等待打开会话到服务器的时间,另一方面,如果它从django启动它应该没问题管理命令。
  2. 你必须仔细遵循使用python代码激活spider的方式,这比简单地运行spider crawl ....
  3. 更复杂
  4. scrapy正在使用扭曲的库,这是一种与django's截然不同的软件架构,如果有时候感觉有点尴尬,可以将它们混合起来。
  5. 异步意味着你让启动器(即用户或django管理命令)进入并让他轮询django数据库以获得答案或报告进度,这里的主要缺点是启动的蜘蛛和等待用户之间的通信,向用户报告进度以及处理错误,即已爬网站点已关闭或更改其结构等。

    底线,两个选项都是可能的,我更喜欢异步方式,保持scrapy盒装(甚至考虑使用scrapyd)并让用户轮询(ajax)用于蜘蛛进度。