CoderCastrov logo
CoderCastrov
Email

Настройка Email-обновлений для вашего парсера с использованием Python и учетной записи Gmail

Настройка Email-обновлений для вашего парсера с использованием Python и учетной записи Gmail
просмотров
4 мин чтение
#Email
Table Of Content

    Очень часто, когда вы создаете парсеры веб-страниц для сбора данных, вы сталкиваетесь с одной из следующих ситуаций:

    • Вы хотите отправить результаты программы кому-то еще.
    • Вы запускаете скрипт на удаленном сервере и хотите получать автоматические, в режиме реального времени отчеты о результатах (например, обновления информации о ценах от онлайн-розничного продавца, обновление, указывающее на то, что конкурирующая компания внесла изменения в свой сайт с вакансиями).

    Одно из простых и эффективных решений - это настроить автоматическую отправку результатов ваших скриптов парсинга по электронной почте (вам или кому-то еще, кто заинтересован).

    Оказывается, это очень просто сделать на Python. Вам нужна только учетная запись Gmail, и вы можете использовать серверы протокола передачи простой почты (SMTP) Google. Я нашел эту технику действительно полезной, особенно для недавнего проекта, который я создал, чтобы отправлять себе и своей семье ежемесячные финансовые обновления из программы, которая выполняет некоторые настраиваемые расчеты на данных нашей учетной записи Mint.

    Первый шаг - импортировать встроенные пакеты Python, которые будут выполнять большую часть работы за нас:

    import smtplib
    from email.mime.text import MIMEText

    smtplib - это встроенный клиент протокола SMTP Python, который позволяет нам подключаться к нашей учетной записи электронной почты и отправлять почту через SMTP.

    Класс MIMEText используется для определения содержимого электронной почты. MIME (Multipurpose Internet Mail Extensions) - это стандарт для форматирования файлов для отправки по Интернету, чтобы они могли быть просмотрены в браузере или почтовом приложении. Он существует уже давно и в основном позволяет отправлять не только ASCII-текст по электронной почте, но и аудио, видео, изображения и другие полезные вещи. Приведенный ниже пример предназначен для отправки электронной почты с HTML-содержимым.

    Вот пример кода для создания вашей электронной почты MIME:

    sender = 'your_email@email.com'
    receivers = ['recipient1@recipient.com', 'recipient2@recipient.com']
    body_of_email = 'Строка HTML для отображения в электронной почте'
    msg = MIMEText(body_of_email, 'html')
    msg['Subject'] = 'Здесь находится строка темы'
    msg['From'] = sender
    msg['To'] = ','.join(receivers)

    Объект MIMEText принимает сообщение электронной почты в виде строки и также указывает, что сообщение имеет "подтип" HTML. См. этот сайт для полезного списка типов мультимедиа MIME и соответствующих подтипов. Ознакомьтесь с документацией Python по email.mime для других доступных классов для отправки других типов сообщений MIME (например, MIMEAudio, MIMEImage).

    Затем мы подключаемся к серверу SMTP Gmail с хостом ‘smtp.gmail.com’ и портом 465, выполняем вход в систему с учетными данными вашей учетной записи Gmail и отправляем сообщение:

    s = smtplib.SMTP_SSL(host='smtp.gmail.com', port=465)
    s.login(user='your_username', password='your_password')
    s.sendmail(sender, receivers, msg.as_string())
    s.quit()

    Обратите внимание: список получателей электронной почты должен быть представлен в виде строки в присваивании msg['From'] (с каждым адресом, разделенным запятой) и представлен в виде списка Python при указании в объекте smtplib s.sendmail(sender, receivers, msg.as_string(). (Долгое время я ломал голову, пытаясь понять, почему сообщение отправляется только первому получателю или вообще не отправляется, и источником ошибки было именно это. Наконец, я наткнулся на этот пост на StackExchange, который решил проблему.)

    В качестве последнего шага вам нужно изменить настройки вашей учетной записи Gmail, чтобы разрешить доступ "менее безопасным приложениям", чтобы ваш скрипт Python мог получить доступ к вашей учетной записи и отправлять электронные письма от ее имени (см. инструкции здесь). Парсер, работающий на вашем компьютере или другой машине, считается "менее безопасным", потому что ваше приложение считается сторонним, и оно отправляет ваши учетные данные напрямую в Gmail для получения доступа. Вместо этого сторонние приложения должны использовать механизм авторизации, такой как OAuth, для получения доступа к аспектам вашей учетной записи (см. обсуждение здесь).

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

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


    Исходно опубликовано на www.marknagelberg.com. Вы можете следить за мной в Twitter здесь_. Чтобы получить доступ к моей общей колоде Anki и базе знаний Roam Research, а также регулярным обновлениям с советами и идеями по повышению эффективности обучения с помощью повторения и улучшения продуктивности вашего обучения, _присоединяйтесь к "Download Mark's Brain".