CoderCastrov logo
CoderCastrov
Твиттер

Парсинг данных Twitter без аутентификации

Парсинг данных Twitter без аутентификации
просмотров
3 мин чтение
#Твиттер

Twitter предоставляет нам API для получения данных твитов, поэтому мы легко можем получить твиты из официального источника. Бесплатная версия Twitter API имеет много ограничений; мы не можем получить твиты, которые старше семи дней. Я попытался найти способ получить данные твитов без официального API, которое накладывает ограничения. Этот пост предназначен только для образовательных целей, делайте это на свой страх и риск.

Twitter - отличный источник данных для ученых; он дает нам возможность стримить и получать данные, используя официальное API. Используя бесплатное официальное API, мы можем получить твиты только за последние семь дней.

Но как получить данные, которые старше семи дней?

Мы можем получить премиум API, но это очень дорого для обычного пользователя, а не для компании.

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

Я нашел эту полезную библиотеку на GitHub, которая может парсить данные Twitter без официального API.


bisguzar/twitter-scraper

API Twitter доставляет много неудобств при работе с ним и имеет множество ограничений. К счастью, у него есть собственный фронтенд (JavaScript)...

github.com

Документация этой библиотеки очень понятная. Мы можем установить эту библиотеку с помощью pip, используя следующий синтаксис.

pip3 install twitter_scraper

Затем мы можем импортировать и получить твиты из аккаунта.

from twitter_scraper import get_tweets
for tweet in get_tweets('twitter'):
    print(tweet['text'])

Я попробовал использовать эту библиотеку для получения данных о твитах от человека, у которого 27 тысяч твитов. Но это не удалось, библиотека получила только около 800 твитов из доступных 27 тысяч.


Я попытался изменить библиотеку с помощью своего кода, и надеялся исправить недостатки этой библиотеки.

Но я не смог.

Я пытался исправить это, изменив URL поиска и заголовки, но это по-прежнему не работает. Как и в предыдущей библиотеке, я получаю только около 800 твитов из 27 тысяч твитов.

Вот мой код; я использую другой метод для получения данных. Я использую BeautifulSoup для получения данных из запроса. Я также добавил функцию для сохранения данных в формате CSV.


Затем я попытался найти некоторые онлайн-инструменты в интернете, которые могут помочь мне получить все твиты от человека.

Тогда я нашел этот веб-сайт

Скачивание и экспорт твитов пользователя в Excel бесплатно — Vicinitas: инструмент для анализа Twitter...

После загрузки до 3200 последних твитов пользователя вы можете экспортировать детали каждого из этих твитов в Excel...

www.vicinitas.io

Вот результат, когда мы пытаемся получить твиты.

Он не только предоставляет нам данные для загрузки в форматах Excel или CSV, но также предоставляет нам представление данных, которые мы получили.

Однако мы не можем получить все твиты. Мы можем получить только 3200 твитов, и нам придется заплатить больше, чтобы получить все твиты.



Заключение и будущая работа

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

Единственный способ сделать это - использовать робота-подобного Kapaw или Selenium. Раньше я уже делал это с помощью Selenium. Когда я попробовал запустить код, он не сработал, потому что Twitter изменил свой интерфейс.

Я все еще работаю над краулером на основе Selenium, чтобы получить все данные. Проблема, с которой я столкнулся сейчас, заключается в том, что класс Twitter и XPath кажутся очень случайными, а страницы Twitter полны AJAX.

Это сложно, но я думаю, что возможно получить все данные о твитах человека с помощью Selenium.


Спасибо