2015-04-28 2 views
0

Я использую Scrapy для сканирования нескольких веб-сайтов, и мне нужен вывод, который будет в JSON. Я поставил команду:Можно ли настроить выход Scrapy json?

scrapy crawl MySpider -o "path/to/output.json" -t json 

Это работает, однако, теперь мне нужно добавить статистику для вывода - список запросов, ошибок, типы ошибок (404-х и т.д.). Кроме того, мне нужно, чтобы выходной файл был переписан, а не добавлен. Я не могу найти никаких инструкций, как это сделать.

ответ

0

AFAIK Item Exporters сделка только с товарами, поэтому не логично делать JsonItemExporter экспорт статистики в этот же файл - структура данных отличается.

Если вы хотите, чтобы данные были перезаписаны - удалите файл перед выполнением экспорта.

0

Элемент вывода и stdout/stderr паука - это две отдельные концепции, и вам лучше не смешивать их.
Оставьте всевозможное часть, как есть, чтобы получить детали в отдельном файле, и собрать другую полезную вывод паука, перенаправив его в лог-файл, например:

scrapy crawl MySpider -o "path/to/output.json" > out.log 2>&1 

Теперь вы будете иметь все бревно файл out.log, и вы можете найти окончательную статистику там. Обратите внимание, что вам не нужно указывать формат с -t явно, если вы используете правильное расширение файла. Кроме того, в настоящее время нет способа изменить поведение, добавляя к выходу, а не перезаписывать, так что вы можете просто удалить файл перед, как:

rm output.json ; scrapy crawl MySpider -o "path/to/output.json" > out.log 2>&1 
+0

Спасибо. Есть ли способ сделать это с Python? Мне нужно иметь все в одном скрипте, а не генерировать временные файлы, если это возможно, поэтому выход должен каким-то образом перенаправляться на Python, и я хотел бы генерировать вывод json вручную. – Ognjen

+0

Я смущен, если я должен использовать этот http://stackoverflow.com/questions/13437402/how-to-run-scrapy-from-within-a-python-script или просто создать конвейер настраиваемого элемента? – Ognjen

+0

Зависит от того, что вы хотите сделать. Если вы хотите полностью запустить сканирование из сценария Python, вы можете найти ответы в этой ссылке. Если вы хотите изменить вывод элементов, посмотрите на [feed exporters] (http://doc.scrapy.org/en/latest/topics/feed-exports.html), вы также можете найти примеры на SO. – bosnjak

Смежные вопросы