У меня есть словарь file_name, URL каждого URL должен быть start_url паука-терапевта, и после сбора элементов для записи в file_name
search_dict={'hello world':'https://www.google.com/search?q=hello+world',
'my code':'https://www.google.com/search?q=stackoverflow+questions',
'test':'https://www.google.com/search?q="test"'}
process = CrawlerProcess({
'DOWNLOAD_DELAY': 0,
'LOG_LEVEL': 'DEBUG',
'CONCURRENT_REQUESTS':10,
'CONCURRENT_REQUESTS_PER_DOMAIN':10,
'AUTOTHROTTLE_ENABLED':False,
})
for file_name,url in search_dict.items():
last_call = []
process.crawl(amazonscraper,start_urls=[url],found_items=[])
spider = next(iter(process.crawlers)).spider
process.start()
now = datetime.datetime.now()
current_date = now.strftime("%d%b")
with open("{}_{}.csv".format(current_date,file_name),"w") as csvfile:
dict_writer = csv.DictWriter(csvfile, keys)
dict_writer.writeheader()
dict_writer.writerows(spider.found_items)
я получил ошибку
`File "/home/test/.local/lib/python3.6/site-packages/twisted/internet/base.py", line 754, in startRunning
raise error.ReactorNotRestartable()
twisted.internet.error.ReactorNotRestartable
после прочтения Scrapy - Reactor не перезагружается , указано, что мне не следует каким-либо образом перезапускать Reactor.
это паучок паука scrapy
class amazonscraper(scrapy.Spider):
name='test'
def parse(self,response):
#code
yield scrapy.Request(url=url,callback=self.parse_more,meta={'item': item}
def parse_more(self,response):
#code
self.found_items.append(item)
Я уже задавал очень похожий вопрос, но ответ не сработал установка стартовых URL для scrapy за пределами класса .
У меня вопрос, как написать found_items
для каждого URL к соответствующему имени файла за пределами класса, или если есть способ сделать в классе.
Примечание: приведенный выше код является отдельным файлом, а не проектом Scrapy, следовательно, если его можно выполнить через определенныеконвейеры, как я могу использовать конвейеры скрипт