Как мне получить доступ к данным Spider из сценария main.py? - PullRequest
0 голосов
/ 12 мая 2019

Предположим, что я запустил проект Scrapy с такой структурой папок:

.root
├── main.py
├── scrapy.cfg
├── app
│  ├── items.py
│  ├── middlewares.py
│  ├── pipelines.py
│  ├── settings.py
│  └── spiders
│     ├── my_spider.py

Итак, в main.py файле у меня есть:

#!/usr/bin/env python
import scrapy
from app.spiders.my_spider import MySpider
from scrapy.crawler import CrawlerProcess
from scrapy.settings import Settings
from scrapy.utils.project import get_project_settings

process = CrawlerProcess(get_project_settings())
process.crawl(VultrSpider())
process.start()

Работает нормально, когда я запускаю ./main.py на терминале, но у меня есть несколько вопросов:

  • Как распечатать значения моих предметов вместо всех выходов Scrapy?
  • Как получить доступ к моим данным из main.py, если предположить, что мне нужно импортировать данные в Pandas DataFrame в main.py?

1 Ответ

2 голосов
/ 12 мая 2019

Вы можете использовать конвейеры для этой цели https://docs.scrapy.org/en/latest/topics/item-pipeline.html

Просто создайте конвейер и вставьте свой вывод или обработку в process_item

Что касается части Dataframes, вы можете создавать / импортироватьфрейм данных в open_spider и назначить его собственной переменной для использования в пауке или в process_item

Использование конвейеров лучше, чем размещение кода где-либо еще, потому что конвейеры работают как буфер, предположим, выочищайте элементы со скоростью 100 элементов в секунду, и вы обрабатываете элементы со скоростью 10 элементов в секунду, тогда использование конвейеров не замедлит процесс очистки, а скорее поставит в очередь ваши очищенные элементы в конвейерах.

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