Я использую Django - scrapy для создания приложения для сканирования некоторых сайтов.
Это мой views.py
на Django, он ловит значения POST и запускает scrap, когда crawlit()
называется
from django.shortcuts import render
from django.http import HttpResponse as hres
from .MetaCrawl import InitCrawl
import json
def index( req ):
return render( req, 'crawler/index.html' )
def crawlit( req ):
val = req.POST['value'] #https://stackoverflow.com
InitCrawler( val )
return hres( json.dumps({'message':'Sent!'}) )
На том же уровне view.py
у меня есть файл с именем MetaCrawl.py
import scrapy
from twisted.internet import reactor
from scrapy.crawler import CrawlerRunner
from scrapy.utils.log import configure_logging
class Spider( scrapy.Spider ):
name="project"
links = []
start_urls = links
def __init__( self, l ):
self.links.append( l )
def parse( self, response ):
for item in response.xpath('//a'):
print(item)
class InitCrawl:
def __init__( self, link ):
configure_logging()
crawler = CrawlerRunner()
crawler.crawl( Spider )
d = crawler.join()
d.addBoth( lambda _: reactor.stop() )
reactor.run()
Я получил эту ошибку:
builtins.ValueError: сигнал работает только в основном потоке
и иногда я получаю эту ошибку:
ValueError: сигнал работает только в основном потоке
Я следовал этому уроку Scrapy Spiders и я потерян.
Как я мог решить это?