CoderCastrov logo
CoderCastrov
Русский

Автоматизированный парсинг данных из Twitter.

Автоматизированный парсинг данных из Twitter.
просмотров
2 мин чтение
#Русский
Source Image

Сначала необходимо установить Python версии 3.8. Вы можете установить его любым удобным для вас способом, но я рекомендую использовать Anaconda. Я создал виртуальное окружение под названием "py38" с помощью следующей команды в терминале.

conda create -n py38 python=3.8

Для активации виртуального окружения используйте следующую команду:

conda activate py38

Инструмент, который поможет нам осуществлять парсинг данных, называется "snscrape". В настоящее время существует две версии: официальная и разработчика. Разработческая версия имеет больше функций, но может содержать некоторые ошибки, которые, безусловно, будут исправлены со временем, и она станет официальной версией для использования.

Для установки официальной версии выполните следующую команду:

pip3 install snscrape

Для установки разработческой версии выполните следующую команду:

pip3 install git+https://github.com/JustAnotherArchivist/snscrape.git

Использование команд в консоли

Для использования snscrape из терминала или командной строки можно использовать несколько полезных команд. Представьте себе следующий пример: нам нужно получить твиты от очень крутого человека... меня! Если активирована виртуальная среда py38, мы можем выполнить следующую команду:

snscrape --jsonl --max-results 100 twitter-search 'from:AndresIns10'> archivo.json

Если по какой-то странной причине вы не хотите получать мои твиты, а хотите получить свои или чьи-то еще, то замените AndresIns10 на выбранного вами пользователя, например, бесстрашного @elonmusk, тогда команда будет выглядеть так:

snscrape --jsonl --max-results 100 twitter-search 'from:elonmusk'> archivo.json"

Обратите внимание, что есть гиперпараметр, который вы можете изменить:

--max-results 100

Это вернет вам максимум 100 твитов. Если в этом аккаунте меньше твитов, то нет проблем, но если их больше, то будет сокращение до 100 результатов. Конечно, это число вы можете изменить на то, что вам нужно (или что позволяет вычислительная мощность вашей машины).

Выходной файл этой команды - это JSON-файл, похожий на это:

{"url","date","content", "id", "user": {"username", "displayname", "id", "description", "rawDescription", "descriptionUrls", "verified", "created", "followersCount", "friendsCount", "statusesCount", "favouritesCount", "listedCount", "mediaCount", "location", "protected", "linkUrl", "linkTcourl", "profileImageUrl", "profileBannerUrl", "url"}, "outlinks", "tcooutlinks", "replyCount", "retweetCount", "likeCount", "quoteCount", "conversationId","lang", "source", "sourceUrl", "sourceLabel", "media","retweetedTweet","quotedTweet", "mentionedUsers"}

Как видите, здесь есть много информации для анализа.

Поиск общей информации

Теперь давайте предположим, что мы хотим найти информацию по общей теме, а не о конкретном пользователе. Для этого также есть вариант!

snscrape --jsonl --max-results 500 --since 2020-01-01 twitter-search \"искусственный интеллект until:2021-01-01\" > text-query-tweets.json

С помощью этой команды мы соберем до 500 твитов с 01 января 2020 года по 01 января 2021 года, которые говорят о теме "искусственный интеллект". Как и в предыдущем случае, данные будут сохранены в файле JSON с похожей структурой.

Как анализировать эти данные?

Анализ будет зависеть от цели, которую вы преследуете, однако я помогу вам, преобразовав эти данные из формата JSON в DataFrame Pandas с помощью следующего кода на Python:

import pandas as pd

tweets = pd.read_json('файл.json', lines=True)

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

Референции

https://betterprogramming.pub/how-to-scrape-tweets-with-snscrape-90124ed006af