Создайте свою собственную автоматизированную нишевую ленту 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
и возможность пропустить или опубликовать статью с выбранным вами комментарием. Давайте реализуем это сейчас.
Примеры запуска этого кода показаны ниже:
Вот и все. Автоматизированная новостная лента для конкретной ниши, которая поможет вам получить подписчиков. Вы даже можете сделать еще один шаг и полностью автоматизировать его - я отказался от этого, потому что это может быть немного спамом, но кто знает.