Парсинг данных вашего интернет-банкинга для использования в Google Sheets
Сегодня мы узнаем, как получить данные из веб-страницы. Это руководство будет написано таким образом, чтобы даже если вы никогда не использовали здесь упомянутые технологии, вы смогли бы следовать инструкциям.
Вы ведете бюджетирование вне интернет-банкинга и хотите, чтобы ваши остатки и транзакции автоматически попадали в Google Sheets? Продолжайте чтение...
Шаги:
Предварительные требования:
- Ваш банк не предоставляет API для получения этой информации:
Если ваш банк предлагает API для этой информации, рассмотрите возможность использования его вместо Selenium.
- Я пользуюсь банком ASB в Новой Зеландии - это руководство будет написано в этом контексте. ОДНАКО, следуя нижеуказанному руководству, вы сможете получить эту информацию из ЛЮБОГО банка.
- Вам понадобится установленный и работающий Python, а также установленный Selenium. Это руководство написано с учетом использования Windows - вам может потребоваться изменить некоторые части этого руководства для адаптации к другим операционным системам.
- Это может нарушать условия использования вашего банка.
Давайте начнем.
Шаг 1 — Установка Python и Selenium
Скачайте и установите Python. После установки выполните следующую команду в командной строке Python, командной строке Windows или в терминале вашего редактора:
- pip install selenium dotenv gspread oath2client
Эти библиотеки необходимы для выполнения следующих шагов.
Шаг 2 — Парсинг с использованием Python и Selenium
Я выбрал Python, так как это самый распространенный и простой язык сценариев для данного случая использования. Я выбрал Selenium, так как это инструмент автоматизации тестирования и предоставляет самый простой способ визуального парсинга данных. Google Sheets (где мы будем размещать данные) имеет возможность парсить данные с веб-страниц, но не за экраном входа в систему.
Прежде чем начать (на самом деле), создайте папку с файлом .env и файлом main.py. Файл .env будет служить хранилищем ваших учетных данных для входа (хорошая привычка), а файл main.py будет содержать весь код.
Вставьте следующий код в main.py:
Пояснение к вышеприведенному коду:
- мы импортируем 'os', чтобы использовать и загружать переменные среды.
- мы импортируем функции 'selenium' для автоматизации входа в банковское приложение.
- мы импортируем 'dotenv' для получения учетных данных для входа из ранее созданного файла .env.
Затем мы хотим определить наш драйвер Selenium:
geckodriver - это движок, предоставляемый Firefox для использования с Selenium. Вы также можете использовать chromedriver, предоставляемый Chrome. Определяемая переменная driver - это браузер, который будет действовать как пользователь, входящий в банковское приложение. Он должен ссылаться на geckodriver.
Затем загрузите свои данные для входа из файла .env:
Теперь перейдем к фактическому автоматическому входу в банковское приложение:
Это указывает 'driver' перейти по указанному вами URL. Самый простой способ дойти до самой дальней точки без необходимости предоставления информации - это страница входа, по крайней мере, для моего банка.
На этом этапе вы можете запустить файл main.py, и если все настроено правильно, у вас должно открыться новое автоматическое окно браузера на указанной вами странице.
Теперь вам просто нужно найти поля ввода для ваших учетных данных и нажать 'вход':
функция _.find_element_by_xpath _позволяет идентифицировать точное поле ввода, которое вам нужно. Простой способ получить XPath элемента на веб-странице - это:
Это выведет XPath для поля входа. В этом случае: '//*[@id="dUsername"]'
Автоматизация заключается в получении необходимых элементов и предоставлении им необходимых данных. Затем мы нажимаем кнопку входа.
Повторное выполнение main.py должно привести к успешному входу в систему.
Далее вы хотите сделать то же самое, что и выше, в терминах использования XPath элементов для получения их значений. В моем случае, чтобы получить текстовое значение баланса моего основного счета, я буду использовать это:
Причина удаления символа '$' заключается в том, чтобы сделать это значение пригодным для использования в Excel в качестве числа.
Получите любые другие значения, которые вам нужны с этого веб-сайта и присвойте им переменные.
Шаг 3 — Отправка собранных данных в Google Sheets
Этот процесс довольно сложен, так как для отправки данных в Google Sheets требуется создать разрешение в Google API Console. Самый простой способ сделать это - следовать инструкциям в документации gspread. В результате вы получите учетную запись службы, которая будет действовать как бот. Не забудьте предоставить адрес электронной почты, найденный в разрешениях client_secret, права на редактирование таблицы, которую вы хотите изменить. Затем просто используйте следующий код:
secret_path - это место, где я храню файл с клиентским секретом, сгенерированным с помощью вышеуказанных инструкций. "Финансы 2020" - это название моей таблицы бюджетирования. В примере я просто отправляю 4 баланса. Это может быть таким простым или сложным, как вам нужно.
Теперь запустите main.py, и вы, надеюсь, увидите нужную вам информацию в вашей таблице Google!
Последние шаги - это упорядочить код. Один из вариантов - предотвратить отображение окна Firefox, в режиме, который Selenium называет «без головы». Я обновил предыдущие определения для движка Firefox следующим образом:
Шаг 4 — Автоматизация в Windows
Поскольку я регулярно проверяю свой бюджет, я запланирую выполнение этого парсера раз в день. Для этого мы воспользуемся Планировщиком задач Windows.
Вам нужно создать файл .bat, который запускает python-скрипт. Это связано с тем, что Планировщик задач Windows не запускает файлы python напрямую. Пример простого файла .bat может выглядеть так:
Вы можете протестировать его, запустив файл .bat. Если все правильно, откроется окно командной строки, и ваш скрипт main.py будет запущен.
Затем в Планировщике задач Windows:
- нажмите «Создать простую задачу...».
- дайте вашей запланированной задаче имя
- выберите триггер. Я установил его на выполнение в 19:00 каждый день.
- Для действия выберите «Запустить программу» и выберите файл .bat, который мы только что создали.
Теперь вы должны увидеть свою запланированную задачу в «Библиотеке Планировщика задач».
Заключение:
В этом руководстве описано, как:
- Парсить данные с защищенной страницы входа
- Отправлять их в Google Sheets
- Автоматизировать этот процесс парсинга
Если у вас возникнут вопросы, не стесняйтесь задавать их в комментариях. Надеюсь, вам понравилось это руководство!