CoderCastrov logo
CoderCastrov
Отладка

Как отлаживать скрипты Scrapy с использованием PyCharm

Как отлаживать скрипты Scrapy с использованием PyCharm
просмотров
5 мин чтение
#Отладка
Command to find the location of Scrapy Framework

Недавно я начал использовать мощный фреймворк для парсинга с названием Scrapy, и мне он очень нравится. В этом руководстве я использовал скрипт, который собирает все объявления о вакансиях с Craiglist (Нью-Йорк). Скрипт можно найти в моем профиле на GitHub. Однако, в процессе сбора нужных мне данных, а именно номеров телефонов, я получал странные результаты, то есть много ложных срабатываний. Это меня заинтриговало, и я хотел узнать, что происходит под капотом, и в голову мне пришла идея использовать мощь отладки для этой цели. Первое, что я сделал, конечно же, это гуглил, как я могу это сделать. После того, как я наткнулся на множество ссылок в результатах поиска, я так и не нашел ничего, что бы удовлетворило мои потребности.

Так что мне пришлось пройти через процесс поиска способа настроить отладчик, и я хотел поделиться с другими людьми тем, что я узнал в трудном, но увлекательном пути.

Используемые инструменты: Python 3.6.5 Scrapy 1.5 PyCharm Community Edition

Поскольку мы собираемся отлаживать скрипт Scrapy, нам нужно знать расположение фреймворка Scrapy на нашей машине. Это довольно просто. Мы просто должны написать эту простую команду в терминале и сохранить результат, так как нам понадобится это позже.

which scrapy
Command to find the location of Scrapy Framework

Прежде всего, мы начинаем с того, что ставим точку останова в одной или нескольких строках нашего кода. Поставить точку останова в PyCharm довольно просто. Вам просто нужно щелкнуть рядом с той строкой кода, в которой вы хотите поставить ее.

Put a breakpoint in some line of code

После того, как мы выполнили первый шаг, мы можем перейти к следующему шагу, который заключается в настройке отладчика.

Чтобы настроить отладчик, найдите вкладку Run на панели инструментов редактора PyCharm и затем нажмите Debug.

Put a breakpoint in some line of code

После нажатия на опцию Debug, появится небольшое окно. Мы можем увидеть опцию "Edit Configurations..." в окне Debug. Мы должны нажать на нее, чтобы настроить отладчик.

Put a breakpoint in some line of code

После нажатия на опцию "Edit Configurations...", откроется окно Run/Debug Configurations. В левом углу этого окна мы можем увидеть множество опций, включая одну (+), которую мы ищем. Мы должны нажать на плюс (+), после чего увидим выпадающее меню с опциями, такими как "Compound, Jupyter Notebook, Python, Python docs, Python tests, Tox". Мы должны выбрать опцию "Python".

Put a breakpoint in some line of code

После нажатия на опцию Python, наконец-то откроется окно настройки, и мы наконец-то начнем настраивать наш отладчик.

Прежде всего, мы видим поле, в которое мы можем ввести имя отладчика. В этом руководстве мы оставим его по умолчанию (Unnamed).

На вкладке "Configuration" этого окна нам нужно пройти через четыре шага:

/usr/local/bin/scrapy
  1. Напишите следующую команду в поле "Script parameters:"
crawl <имя паука> -o any_name.csv
  1. Выберите тот же Python интерпретатор, который вы используете в своем проекте. В моем случае это Python 3.6.5. Вы можете найти все интерпретаторы Python, нажав на кнопку раскрывающегося списка рядом с соответствующим полем.

  2. Выберите правильную рабочую директорию, то есть директорию, где находятся ваш проект и пауки, которые вы хотите отлаживать.

После того, как мы сделали все эти настройки, мы готовы. Просто нажмите кнопку Debug внизу текущего окна (Debug - Unnamed), и отладчик запустится.

Put a breakpoint in some line of code

Поскольку мы настроили и запустили отладчик, мы можем использовать мощь отладки, чтобы наблюдать шаг за шагом, что происходит под капотом при выполнении кода.

Кнопки, показанные ниже, обрамлены красным прямоугольником, и имеют следующие функции:

Put a breakpoint in some line of code

Внизу редактора PyCharm мы можем увидеть окно Debug. В окне "Frames" мы можем увидеть, как выполнялся код, то есть иерархию классов и функций, пока он не достиг той части кода, которую мы пытаемся отлаживать. Там есть окно "Variables", которое мы можем развернуть и посмотреть, что мы получаем там.

Put a breakpoint in some line of code

Мы можем использовать кнопку "Evaluate", последнюю кнопку из вышеупомянутых, чтобы посмотреть, как работает определенная часть кода.

В этом случае, если мы напишем "response.body" и нажмем "Evaluate", будет получено тело определенного URL, и мы можем просмотреть его, нажав кнопку "View" слева, чтобы увидеть полученные результаты.

Put a breakpoint in some line of code

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

Щелкнув правой кнопкой мыши на точке останова, откроется окно, в котором мы сможем задать условие в поле "Condition:". Нажмите "Done", и после этого вы увидите небольшой вопросительный знак рядом с этой точкой останова.

Put a breakpoint in some line of code

Заключение

Как видите, довольно легко настроить отладчик в PyCharm, и это действительно очень полезно. Тем не менее, самые простые вещи иногда наиболее пренебрегаемы, и поэтому я хотел внести свой вклад в уже существующее большое количество знаний о парсинге и помочь другим, особенно новичкам в программировании.

Надеюсь, вам понравилось и вы нашли это полезным в своей работе.


Ссылки:


Окно инструментов отладки - Справка | PyCharm

Оно отображает вывод, сгенерированный сеансом отладки вашего приложения. Если вы отлаживаете несколько...

www.jetbrains.com

Scrapy: Мощный парсинг и сканирование веб-сайтов с использованием Python

Python Scrapy Tutorial - Узнайте, как парсить веб-сайты и создавать мощный веб-сканер с помощью Scrapy и Python

www.udemy.com