Создайте свою собственную автоматизированную нишевую ленту Twitter

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

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

Вы попали в нужное место. Прочтите и узнайте, как создать свою собственную персонализированную новостную ленту Twitter.

Прежде чем мы начнем, я хотел бы объяснить, почему это хорошая идея.

Исследование, проведенное Beevolve, показало, что в действительности больше твитов = больше подписчиков.

Но постоянно публиковать сообщения не так-то просто - к тому же это должен быть контент, который люди хотят видеть.

Решение? Автоматизировать.

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

Бот, который вы узнаете из этой статьи, будет извлекать технические новостные ссылки из Hacker News и Reddit, которые содержат определенные ключевые слова, и твитнуть их из вашей учетной записи. Хотя этот пример касается поиска технического контента, было бы очень легко изменить этот код для разных сайтов и жанров.

Создание бота

Сначала нам нужно подумать о том, как мы будем получать новостные ссылки. Самый универсальный способ сделать это - парсинг веб-страниц: мы получаем источник страницы, с которой хотим получать новости, и просматриваем его, чтобы извлечь все, что захотим.

Для этого в Python есть отличная библиотека под названием Beautiful Soup. Получите это с помощью следующей команды:

pip install beautifulsoup4

Вот как мы можем очистить сообщения из Hacker News. Очистка веб-страниц может быть медленной, особенно когда вам нужно загрузить несколько страниц, поэтому по возможности ее следует избегать.

Для Reddit есть гораздо более простая альтернатива. Для каждого субреддита (например, r / Python) существует файл JSON, содержащий все данные для самых популярных сообщений, и еще один файл для новых сообщений. В этом примере он расположен здесь.

Начнем с создания парсера для Hacker News.

Во-первых, нам нужно изучить поведение сайта Hacker News.

Стартовая страница сайта - это только самые популярные посты дня, которые пока не особо полезны. Но если вы прокрутите вниз, вы увидите ссылку «Еще».

По этой ссылке вы перейдете на следующую страницу, где URL-адрес изменится на https://news.ycombinator.com/news?p=2.

Вы можете видеть, что страница изменяется в соответствии с p, где p=1 содержит первые 29 сообщений, p=2 содержит следующие 29 и так далее. Важно отметить, что p никогда не превышает 20, после чего возвращает только пустые страницы.

Если вы щелкните правой кнопкой мыши и нажмите "Проверить элемент" на одном из заголовков сообщения, вы сможете увидеть источник страницы.

Обратите внимание на источник. Вы видите, что статьи находятся в структуре таблицы HTML.

Каждый заголовок представляет собой td (ячейку данных таблицы) с class="title" и содержит URL-адрес статьи, которая также имеет текстовый заголовок.

Вы также можете увидеть другой элемент: <td class="title valign="top" align="right">. Это не тот элемент, который нам нужен, но он принадлежит к классу title, поэтому он появится, когда мы попытаемся получить title ячеек данных таблицы классов. Чтобы исключить этот элемент, мы можем использовать свойство align="right" и исключить его из наших результатов, если свойство присутствует.

Также есть «новая» страница, на которой показаны сообщения по последним отправлениям.

Новая страница следует очень похожей системе; однако вместо p=1 вы должны указать номер первого сообщения на странице с n=(number). Например, https://news.ycombinator.com/newest?n=24 отображает от 24 до 53.

Это вся информация, которая нам нужна для очистки сообщений с сайта Hacker News, и она позволит нам получить источник всех страниц, очищая все 29 сообщений с каждой страницы. Вы можете применить этот процесс к большинству сайтов, хотя они будут различаться по макету.

Теперь нам нужно поместить эту информацию в Python.

Парсинг новостей хакеров

Во-первых, мы хотим определить подпрограмму, которая извлекает номер страницы из new или top, используя информацию, которую мы только что обсудили.

Этот код сначала определяет, очищает ли он новые сообщения или самые популярные, использует модуль запросов для получения источника страницы и анализирует таблицу с помощью Beautiful Soup для извлечения соответствующей информации. Затем он выводит заголовок и URL каждой статьи.

И чтобы получить каждую топовую статью, мы можем повторить это 20 раз (для 20 страниц):

Reddit Feed

Этот код загружает файл JSON, указанный в параметре url, анализирует его как строку и выполняет итерацию по объектам сообщения, печатая заголовок и URL-адрес, если сообщение является ссылкой на статью.

Фильтрация релевантного контента

Помните, что мы говорили о спаме?

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

Для этого мы можем использовать встроенную функцию any().

any() возвращает True, если хотя бы одно из значений в итерации равно True.

keywords=["python","fun","coding"]
string="i like python"
any(kw in s.lower() for kw in keywords)

В этом примере будет возвращено True, потому что python находится в списке ключевых слов.

Этот код возвращает True, если какое-либо из ключевых слов находится в строковом параметре s.

Чтобы реализовать это в нашем коде, мы можем написать:

И реализовано в нашем коде:

Обратите внимание, что теперь мы получаем более адаптированный и конкретный контент.

Размещение в Твиттере

Чтобы публиковать сообщения в Твиттере, вам понадобится Tweepy

pip install tweepy

И вам нужно будет создать приложение для разработчиков Twitter, получить ключ аутентификации и получить токен доступа.

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

Перейдите в Настройки ›Разрешения приложений и внесите соответствующие изменения.

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

Проверьте свои ключи с помощью Tweepy, например:

Твитнуть можно с помощью api.update_status(string), поэтому давайте создадим подпрограмму, которая принимает заголовок, URL, описание (потому что ни один твит не обходится без остроумного комментария) и некоторые теги, и размещает их в виде строки.

В нашем коде после очистки мы можем добавить возможность просмотра статьи в веб-браузере с помощью модуля webbrowser и возможность пропустить или опубликовать статью с выбранным вами комментарием. Давайте реализуем это сейчас.

Примеры запуска этого кода показаны ниже:

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