Запустите проект 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