как вызвать scrapy spider из view.py моего django приложения? - PullRequest
0 голосов
/ 26 апреля 2020

Моя цель - проверить, присутствует ли конкретный javascript в списке URL-адресов, которые пользователь вводит в интерфейс моего приложения. Я хочу взять этот URL и передать его моему пауку и хочу вернуть два списка. Один, который содержит список URL-адресов, в которых присутствует javascript, а другой список, который не содержит javascript. Я хочу отобразить эти списки обратно на html моего приложения. Когда я запускаю своего паука из терминала с помощью команды, я получаю желаемый вывод, но хочу его внешний вид.

Мой django файл приложения view.py

    from concurrent.futures import process

from django.shortcuts import render
from scrape.scrape.spiders import ScrapeSpider
from scrapy.crawler import CrawlerProcess

# Create your views here.

def base(request):
    return render(request, "base.html")

def home(request):
    search = request.POST.get("search")
    process.crawl(ScrapeSpider)
    data = {
        "search": search
    }
    return render(request, "scraping/home.html", data)

Мой файл паука выглядит следующим образом.

    import scrapy


class ScrapeSpider(scrapy.Spider):
    name = "scrape"
    allowed_domains = ["smolnarod.ru"]

    start_urls = [
        "https://fribbla.com/en/20-dog-breeds-you-might-want-to-reconsider-getting/",
    ]

    def parse(self, response):
        data = response.xpath("//script[contains(., 'xyz')]").extract_first(default="not-found")
        if data == "not-found":
            print("Not Exists")
        else:
            print("Exists")

Каталог, в котором находится мой паук. scrape / scrape / spider / scrape.py

Во время работы приложения возникает ошибка

    from scrape.scrape.spiders import ScrapeSpider
ImportError: cannot import name 'ScrapeSpider' from 'scrape.scrape.spiders' (unknown location)

Пожалуйста, дайте мне знать, если я смогу сделать это другим способом, используя javascript или любым другим способом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...