Запустите проект scarpy из djnago views,py

Я создаю скрепер, который будет извлекать email id из урлов сайтов, и я хочу интегрировать его в мой модуль Django views.py. Структура моего проекта выглядит следующим образом :

электронные письма emails -init.py -asgi.py -settings.py -urls.py

e_scrapy (django-app) email_scrapper //scrapy проект
пауки --init__.py -email_extraction.py
init.py items.py middlewares.py трубопроводы.py settings.py scrapy.cfg

 __init__.py
 admin.py
 apps.py
 models.py
 tests.py
 urls.py //manually added
 views.py

мой файл email_extraction.py имеет следующий код::

также мой views.py :

from scrapy.crawler import CrawlerProcess
from email_scrapper import EmailExtractor

process=EmailExtractor(CrawlerProcess)
process.start
process.stop

я не знаю, я новичок в использовании scrapy и пытаюсь интегрировать его, чтобы сделать удобный интерфейс, есть ли способ интегрировать вышеупомянутый email_extraxtion.py spider в мой views.py и запустить его таким образом, чтобы всякий раз, когда я ввожу данные из front end, происходил вызов из views.py к scrapy spider и данные начинали извлекаться и возвращали мне текстовый файл?

Если вам нужны другие файлы для проверки, вы можете попросить их тоже, но я чувствую, что этих деталей достаточно для решения этой проблемы

Я не очень хорошо знаком с scrapy, но судя по коду, который вы опубликовали, у вас нет никаких представлений django для обработки пользовательских HTTP-запросов. В views.py вам не хватает чего-то вроде:

from django.http import HttpResponse
from django.views import View

class ScrapyView(View):
    def get(self, request, *args, **kwargs):
        process=EmailExtractor(CrawlerProcess)
        process.start()  # here the method needs to be called
        return HttpResponse('Hello, World!')

Затем, в urls.py необходимо добавить:

from django.urls import path
from myapp.views import ScrapyView

urlpatterns = [
    path('scrape/', ScrapyView.as_view(), name='scrapy-view'),
]

См: https://docs.djangoproject.com/en/4.1/ref/class-based-views/base

Вернуться на верх