python - 一起使用 django 和 scrapy

标签 python django scrapy

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

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

有人可以帮我出主意吗?这将是一个很大的帮助。谢谢!!

最佳答案

实际上有两种方法可以管理这些爬虫:同步或异步。

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

  1. 蜘蛛通常需要很长时间来完成他们的工作,而不是你希望网络用户等待服务器打开 session 的时间,另一方面,如果它是从 django 启动的,应该没问题管理命令。
  2. 您必须仔细遵循使用 python 代码激活蜘蛛的方式,这比简单地运行 spidercrawl ....
  3. scrapy 使用twisted 库,这是一种与 django 非常不同的软件架构,虽然有时感觉有点尴尬,但混合它们是可能的。

异步意味着你让启动器(即用户或django管理命令)去并让他轮询django数据库以获取答案或报告进度,这里的主要缺点是启动的蜘蛛和等待的用户之间的通信,向用户报告有关进度以及处理错误,即已爬网的网站已关闭或更改了其结构等。

底线,这两种选择都是可能的,我更喜欢异步方式,将 scrapy 装箱(甚至考虑使用 scrapyd)并让用户轮询(ajax)获取蜘蛛进度。

关于python - 一起使用 django 和 scrapy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21544372/

相关文章:

python - 再次添加数组的每个成员,紧接着其自身

python - 为什么 django 自定义命令中导入的 python 脚本会覆盖 optparse 选项

python - 一种以字符串形式存储相对日期的方法

python - Scrapy 登录表单

python - 如何使用 scrapy Selector 获取节点的 innerHTML?

python - 从我的本地环境调用 stripe charge API 时出现 TLS 问题

python - 咖啡烘焙程序,如何编写一个程序,对温度读数样本进行排序,并且只返回最低 10 个的平均值?

python - 你如何获得 Python 中两个时间对象之间的差异

django - 如何判断 Django 查询集中哪些字段已被延迟/仅被延迟

http - Scrapy:发送http请求并解析响应