Posted in

Как вытянуть все емейл-адреса с sendpulse (код на python)

Sendpulse как выгрузить все мейлы со своей базы
Код программы на python3 чтобы выгрузить все мейлы с sendpulse

Собрал я приличную базу мейл-адресов на сайте sendpulse. И захотел я ее сохранить (на всякий случай, для будущих рассылок, да просто чтобы была). Но вручную копировать с сайта неудобно, а массовой выгрузки нет. У них есть api, и даже готовое решение на языке python 3, но там неполные примеры. В общем, накидал тут код, который выгружает ваши мейл-адреса с адресной книги.

Как выгрузить емейлы с адресной книги Sendpulse

Обновлено 31.03.2022: их библиотека рабочая, но мой код требует улучшения. Либо пробуем сами, либо платим деньги – поправлю.

Для начала Вам нужен api ID и api SECRET. Их можно взять у себя в настройках.
Регистрация в SendPulse.

Sendpulse REST API - как выгрузить эмейлы
Sendpulse REST API – как выгрузить эмейлы

Раз код на питоне, Вам нужно установить питон (у меня код для python3, если чуть поправить, то и на второй пойдет).
Установите модуль sendpulse (через pip install pysendpulse). Дальше код самой программы.

from pysendpulse.pysendpulse import PySendPulse

if __name__ == "__main__":
    REST_API_ID = '90bcb1c4d66666454441888c' #id
    REST_API_SECRET = 'e457ab24332424344333' #secret
    TOKEN_STORAGE = 'memcached'
    SPApiProxy = PySendPulse(REST_API_ID, REST_API_SECRET, TOKEN_STORAGE)

    # Get Mailing Lists list example
    allmails = [] #создаем список для будущих емейлов
    try:        
        i=0 #основной цикл
        k=0 #по сколько мейлов выбирать
        while i<=9:             
            allemaila = SPApiProxy.get_emails_from_addressbook('896075', limit=0, offset=k) #896075 - айди адресной книги            
            i+=1 #плюс еще одна страница
            k+=99 #еще 99 мейлов
            for onemail in allemaila:
                allmails.append(onemail['email']) #добавляем мейл в список
    except Exception as err:
        print(err) #если ошибка - вывести ее.
    allmails = set(allmails) #сортируем список с мейлами, оставив только уникальные
    with open(r'C:\Users\bdseo\Desktop\mails_30052018.txt', 'a') as mm:
        for mailp in allmails:
            mm.write(mailp + '\n') #сохраняем построчно эмейлы в файл mails_30052018.txt

Немного пояснений (в коде самой программы есть комментарии). Вначале прописываем свои ключи и подключаемся по апи к sendpulse. Потом идет цикл, чтобы получить мейлы. Дело в том, что sendpulse не отдает больше 100 мейлов за раз (ну или мне просто лень было искать). Поэтому мы отправляем несколько раз запросы, меняя страницы и количество offset.

В моем примере мы проходим 10 раз (10 страниц – while i<=9 при i = 0) по 100 адресов (база на 1000 эмейл-адресов).
Количество адресов прописано в offset, больше 100 задать нельзя. Точнее можно, но будут отображены только последние 100. Поэтому пишем меняющейся число k, которое при каждом обходе увеличивается на 99.

При каждом обходе значение “email” заносится в список, потом этот список сортируется (set(allmails)) и построчно записывается в файл.

Если кому нужно стащить мейлы со своих адресных книг в sendpulse, и не охота делать все выше перечисленное – пишите мне, предлагайте цену и я вам с удовольствием помогу. Обещаю, что мейлы себе не оставлю 🙂

5 thoughts on “Как вытянуть все емейл-адреса с sendpulse (код на python)

  1. Привет, Вебмастер, есть задача, как с вами связаться?

    1. Ничего вроде не получал, если что пишите 😉

  2. добрый день,
    у меня выводит ошибку

    string indices must be integers

    как это исправить?

    1. Пробовать самому или нанять кого-то.
      Спросить на тематических форумах.
      Я сейчас занят

Leave a Reply

Your email address will not be published. Required fields are marked *