【问题标题】:Spider in Django viewsDjango 视图中的蜘蛛
【发布时间】:2023-01-03 02:12:57
【问题描述】:

我想在 Django 视图中使用 scrapy spider,我尝试使用 CrawlRunner 和 CrawlProcess 但是有问题,视图同步并且进一步的爬虫不直接返回响应

我尝试了几种方法:

# Core imports.
from scrapy.crawler import CrawlerProcess
from scrapy.utils.project import get_project_settings

# Third-party imports.
from rest_framework.views import APIView
from rest_framework.response import Response

# Local imports.
from scrapy_project.spiders.google import GoogleSpider


class ForFunAPIView(APIView):
    def get(self, *args, **kwargs):
        process = CrawlerProcess(get_project_settings())
        process.crawl(GoogleSpider)
        process.start()
        return Response('ok')

有没有什么解决方案可以处理这个问题并在不使用 DjangoItem 管道的情况下直接在其他脚本或项目中运行蜘蛛?

【问题讨论】:

    标签: django django-rest-framework scrapy


    【解决方案1】:

    你并没有真正说明问题是什么,但我想问题是你需要立即返回响应,并让重调用 aka 函数在后台运行,你可以改变你的代码如下,使用线程模块

    from threading import Thread
    
    process = CrawlerProcess(get_project_settings())
    process.crawl(GoogleSpider)
    
    thread = Thread(target=process.start)
    thread.start()
    return  Response('ok')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-11
      • 1970-01-01
      • 2022-07-05
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多