Scrap Start URL для записи в разные файлы - PullRequest
0 голосов
/ 07 июня 2019

У меня есть словарь 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, следовательно, если его можно выполнить через определенныеконвейеры, как я могу использовать конвейеры скрипт

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