2014-01-17 23 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