CoderCastrov logo
CoderCastrov
Парсер

Более быстрый парсинг с помощью Scrapy shell

Более быстрый парсинг с помощью Scrapy shell
просмотров
2 мин чтение
#Парсер

Вы добавляете инструкции print и снова и снова запускаете свой парсер, чтобы проверить вывод? Хотите ли вы иметь возможность установить точки останова? У вас открыт Chrome в фоновом режиме, и вы используете jQuery, чтобы проверить селекторы непосредственно на веб-сайте, который вы пытаетесь парсить?

Я знаю это чувство и с радостью поделюсь лучшим способом! Этот трюк сэкономил мне много часов.

Используйте shell

Python имеет отличный интерпретатор командной строки, который я часто использую для проверки простых синтаксических конструкций или того, как что-то работает. Запустите python в вашей командной строке, и вы внутри. Я использую его для тестирования небольших фрагментов кода, и поскольку он автоматически вычисляет объекты без их вывода, это отлично подходит для быстрой проверки результатов.

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

Вы можете добавить точки останова в Scrapy

Во-первых, давайте поговорим о том, как мы можем проверить, что происходит внутри нашего парсера, не полагаясь на операторы print. Решение здесь заключается в использовании метода inspect_response. Это заставляет Scrapy остановить выполнение кода Python и открыть интерактивную оболочку прямо там, где вы вызываете этот метод. Это отличный способ остановить выполнение кода и отладить его в процессе работы.

Возьмем, например, этот пример парсера, который я настроил для своего блога:

Добавив вызов inspect_response в этот файл, я теперь могу запустить его и сразу же проверить ответ:

Объект response и любые другие локальные переменные доступны там, и можно вызывать любые методы в режиме реального времени.

response.css('.entry-title a::text').getall()

Вы можете использовать Ctrl+D, чтобы выйти из оболочки и продолжить парсинг, или quit(), чтобы прервать его.

Вы также можете парсить в реальном времени

Теперь самая интересная часть. Вам даже не нужно создавать парсер. Вы можете просто передать URL в Scrapy и запустить его как есть, используя Scrapy shell:

scrapy shell https://greycastle.se
Запуск Scrapy shell для быстрого осмотра страницы

Умная работа - это быстрая работа

Переход от использования jQuery и инструкций print к отладке с использованием Scrapy shell, как в приведенном выше примере, сократил время, затрачиваемое на создание парсеров, на несколько часов. Конечно, чем сложнее становится ваш парсер, если у вас есть несколько шагов и т. д., тем сложнее использовать shell, но я все равно считаю, что он может вам очень помочь в проверке ваших идей перед завершением кода. Когда нужно что-то изменить, inspect_response - ваш лучший друг для быстрой проверки результатов.

Надеюсь, это поможет, наслаждайтесь парсингом!