【问题标题】:Run Scrapy through Django View通过 Django View 运行 Scrapy
【发布时间】:2018-01-23 18:35:31
【问题描述】:

所以,我正在从事以下项目:
我正在使用Django 开发一个网站,该网站将用作网络爬虫的远程管理器。更具体地说,我用Scrapy 创建了一个蜘蛛,它可以从另一个网站下载一些 PDF 文件。
我的目标是找到一种通过POST(我猜)请求调用蜘蛛的方法,并让爬虫在我的Django 视图中运行。下载的文件将存储在网站运行的服务器上,而不是任何运行蜘蛛的个人电脑上。
因此,当我登录我的网站并按下Crawl 按钮时,新文件会下载到服务器的文件库中。

我对 Django 和 Scrapy 还很陌生,所以我不知道如何让它们一起工作以实现我正在寻找的东西,有人可以指导我一个方向吗?
我已经看到一些关于通过其他 Python 脚本运行 Scrapy 脚​​本的问题,但我不明白如何连接它们,将 Scrapy 项目文件放在哪里等。

感谢您的宝贵时间,希望我没有让您感到困惑!

【问题讨论】:

  • 老实说,我已经查看了该帖子,但无法理解Scrapyd 的工作原理,所以我想问问是否有人有类似情况的经验来指导我!我会再检查一遍,谢谢!
  • 对于每个想知道相同问题的人来说,Scrapyd 最终对我来说就像一个魅力。我在解决这个问题时遇到了一些麻烦,但我很乐意帮助遇到同样问题的任何人!

标签: python django web-scraping scrapy web-crawler


【解决方案1】:

我不建议在你的 django 视图中启动一个新进程,在这种情况下我会使用像 redis 队列这样的作业队列,你可以使用django-rq 轻松配置。 https://github.com/rq/django-rq

然后您可以将蜘蛛排入队列并在工作人员中运行。

import django_rq

from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings
from my_project.spider import MySpider

def run_spider():
    process = CrawlerProcess(get_project_settings())
    process.crawl(MySpider)
    process.start()

django_rq.enqueue(run_spider)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-29
    • 2015-03-21
    • 1970-01-01
    • 2015-03-12
    • 2017-01-09
    • 2011-03-27
    • 1970-01-01
    相关资源
    最近更新 更多