Более быстрый парсинг с помощью Scrapy shell
Вы добавляете инструкции 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
Умная работа - это быстрая работа
Переход от использования jQuery и инструкций print к отладке с использованием Scrapy shell, как в приведенном выше примере, сократил время, затрачиваемое на создание парсеров, на несколько часов. Конечно, чем сложнее становится ваш парсер, если у вас есть несколько шагов и т. д., тем сложнее использовать shell, но я все равно считаю, что он может вам очень помочь в проверке ваших идей перед завершением кода. Когда нужно что-то изменить, inspect_response
- ваш лучший друг для быстрой проверки результатов.
Надеюсь, это поможет, наслаждайтесь парсингом!