2014-01-17 13 views
0

我很新的Python,我试图将Scrapy与Django集成。在Django中向用户显示Scrapy结果

这里就是我试图使发生:

  1. 用户提交的URL刮
  2. URL刮
  3. 刮数据返回屏幕用户
  4. 用户分配属性(如有必要)然后将其保存到数据库。

完成此操作的最佳方法是什么?我已经玩过Django Dynamic Sc​​raper,但我认为我最好保持对Scrapy的控制权。

回答

3

抓住django请求,同时刮另一个网站可能不是最好的主意,这个流程最好是异步完成,意思是说,释放django请求,并有另一个进程来处理报废,我想它不是一件容易做到的事情新来者,但试图裸露在我身边。

流程应该是这样的:

  1. 用户提交给其他网站刮去一些数据在不同的过程比Django的
  2. 蜘蛛抓取开始的请求,用户请求被释放
  3. 蜘蛛管道项目到一些数据存储(数据库)
  4. 用户循环上要求的数据,django基于插入到数据存储的数据更新用户

拍摄scrapy蜘蛛可以通过直接从Python代码启动它来完成,使用像celery的工具,也看到django and celery,或使用python的subprocess,甚至更好的新进程启动它,使用scrapyd来管理这些蜘蛛

+0

有趣!由于我是新人,对编程毫无所知,所以我没有想过每个人都会被请求。我必须更好地熟悉我的这个概念。 如果我正确理解你,这将意味着数据将被直接发送到数据库(不根据需要首先分配属性)。然后数据将被调用回django视图,用户可以在其中操作/验证数据并设置所需的属性(因此,基本上,这些项目将具有这些属性作为空字符串,否则为null,直到它被回调到视图中) – Tim

+0

是的,在这种情况下,我猜这个页面会逐渐建立起来,或者会有一个标志,表明数据已准备就绪,无论如何,蜘蛛和web服务器之间的通信应该通过数据库,服务器应该定期请求数据,还要注意,如果用户关闭浏览器,它不会改变流程,并且数据可以等待他以供后者使用 –

+0

您是否可以指示我如何在django中标记数据?即使只有术语名称在文档/谷歌浏览。最后一点需要注意的是:因为我不希望这些数据在分析之前与大系统分开,所以有一个叫做“分析”的布尔值,或者将它们放在某种单独的表中,会更聪明吗? – Tim