Парсинг Twitter API
Table Of Content
Twitter является популярной социальной сетью, в которой мы можем получить различные данные и информацию. Поэтому неудивительно, что Twitter часто используется для сбора данных. Фактически, для получения данных из Twitter существует несколько способов, в том числе парсинг и парсер API. В этой статье я расскажу о технике парсинга API. Для выполнения парсинга Twitter API нам понадобится учетная запись Twitter и учетная запись разработчика для получения доступа к API.
Создание учетной записи Twitter можно легко выполнить, посетив twitter.com, а для учетной записи разработчика нам нужно посетить developer.twitter.com и создать учетную запись разработчика. Затем в меню выберите "Projects & Apps" > "Overview" > "New Project". Приблизительно это будет выглядеть следующим образом:
В процессе Twitter задаст несколько вопросов о том, что вы собираетесь делать с этим API и для чего вы собираетесь использовать это API.
Для парсинга Twitter API я буду использовать Python. Для этого нам понадобится библиотека tweepy. Чтобы установить эту библиотеку, откройте командную строку в Windows и введите следующий код:
pip install tweepy
таким образом библиотека tweepy будет установлена. И мы можем импортировать ее в блокнот Python. Затем откройте блокнот Python, в данном случае я использую Jupyter Notebook.
Сначала импортируйте библиотеки, которые будут использоваться, а именно "tweepy" и "csv", с помощью следующего кода:
import tweepy
import csv
Затем, чтобы получить доступ к API, нам понадобятся токен доступа, секретный токен доступа, ключ API и секретный ключ API. Это можно получить из учетной записи разработчика. В меню выберите Overview, затем выберите созданный нами проект. Затем выберите "Keys and token" и появится "API Key and Secret" в разделе Consumer Keys, затем нажмите "Generate", я уже сгенерировал, поэтому оно изменится на "Regenerate".
После нажатия "Generate" мы получим токен доступа, секретный токен доступа, ключ API и секретный ключ API. Далее мы будем получать доступ к этому API Twitter с помощью Python. Сначала определите ключ и токен следующим образом:
consumer_key = "YOUR_CONSUMER_KEY"
consumer_secret = "YOUR_CONSUMER_SECRET"
access_token = "YOUR_ACCESS_TOKEN"
access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"
Чтобы получить доступ к API, нам сначала нужно аутентифицироваться, используя функцию .OAuthHandler() из библиотеки tweepy с вводом ключа API и секретного ключа API. Затем мы связываем его с функцией .set_access_token() с вводом токена доступа и секретного токена доступа. Чтобы было понятнее, рассмотрим следующий код:
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
После этого, чтобы получить доступ, используйте функцию .API() из библиотеки tweepy с вводом переменной аутентификации и установкой wait_on_rate_limit в "True", как показано ниже:
api = tweepy.API(auth, wait_on_rate_limit=True)
Затем мы определим, какую статью мы хотим получить в переменной search_key. В данном случае я ищу хэштег "horror", как показано ниже:
search_key = "#horror"
А код под переменной search_key предназначен для создания пустого файла csv, который затем будет заполнен нашими данными парсинга, с именем файла csv, совпадающим с именем search_key, которое мы создали. В данном случае это будет #horror.csv.
Обратите внимание на ввод в функции open(), здесь вводится "a+", что позволяет нам читать и добавлять содержимое этого файла csv.
КАК ЗНАНИЕ:
Существует несколько режимов чтения текстовых файлов:
Перейдем к следующему коду:
**Обзор: **помимо экспорта данных парсинга в csv, я создам pandas dataframe, чтобы данные, которые мы получим, также можно было отображать в Python в удобном виде. Для этого мы создадим пустой список > заполним список > преобразуем список в формат словаря данных > преобразуем в pandas dataframe
Поэтому я создам пустой список, который затем будет заполнен полученными данными. Полученные данные будут содержать "created_at", указывающую дату публикации сообщения, "tweet_id", указывающую идентификатор Twitter, который опубликовал сообщение, "user.name", указывающую имя пользователя, который опубликовал сообщение, и "text", указывающую содержание сообщения. Таким образом, мы создадим 4 пустых списка, как показано ниже:
created = []
id = []
user = []
text = []
Затем, чтобы выполнить парсинг, используйте функцию .Cursor() из библиотеки tweepy с вводом:
Затем мы связываем функцию .Cursor() с функцией .items(), которую затем используем в цикле, чтобы каждая строка данных, которую мы получаем, заполняла созданные нами пустые списки. Используйте следующий код:
for tweet in tweepy.Cursor(api.search, q=search_key, lang="en", tweet_mode="extended").items(100):
created.append(tweet.created_at)
id.append(tweet.id)
user.append(tweet.user.name)
text.append(tweet.full_text.encode("utf-8"))
Как было объяснено выше, данные, которые мы получаем, хранятся в переменных tweet.created_at, tweet.id, tweet.user.name и tweet.full_text. Эти данные будут добавлены в список с помощью функции .append(). Например, "created.append(tweet.created_at)" означает, что в список created будет добавлена дата из tweet.created_at. Таким образом, мы получаем список, который содержит данные парсинга.
Затем обратите внимание на следующий код:
tweets = [tweet.created_at, tweet.id, tweet.user.name, tweet.full_text.encode("utf-8")]
csvWriter.writerow(tweets)
этот код добавляет данные парсинга в список с именем "tweets", который затем будет добавлен в текстовый файл с помощью функции .writerow(), эта функция добавляет строки в текстовый файл построчно.
Из цикла выше мы получили список, который содержит данные парсинга, а именно список "created", "id", "user" и "text". Затем мы преобразуем его в формат словаря данных с помощью следующего кода:
data = {"created": created, "id": id, "user": user, "text": text}
Мы знаем, что для создания словаря данных используются (фигурные скобки). Затем код с красным цветом является именем столбца, а черный цвет - данными этого столбца, то есть список, который мы создали ранее.
После успешного создания словаря данных мы преобразуем его в pandas dataframe, чтобы он выглядел более аккуратно, с помощью функции .DataFrame() из библиотеки pandas, которую мы импортировали как "pd". Используйте следующий код:
df = pd.DataFrame(data)
Таким образом, pandas dataframe создан и мы отобразим его результаты.
Прежде чем продолжить, чтобы лучше понять код для парсинга данных из Twitter, я прикреплю полный код.
import tweepy
import csv
import pandas as pd
consumer_key = "YOUR_CONSUMER_KEY"
consumer_secret = "YOUR_CONSUMER_SECRET"
access_token = "YOUR_ACCESS_TOKEN"
access_token_secret = "YOUR_ACCESS_TOKEN_SECRET"
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_token, access_token_secret)
api = tweepy.API(auth, wait_on_rate_limit=True)
search_key = "#horror"
csvFile = open(search_key + ".csv", "a+")
csvWriter = csv.writer(csvFile)
created = []
id = []
user = []
text = []
for tweet in tweepy.Cursor(api.search, q=search_key, lang="en", tweet_mode="extended").items(100):
created.append(tweet.created_at)
id.append(tweet.id)
user.append(tweet.user.name)
text.append(tweet.full_text.encode("utf-8"))
tweets = [tweet.created_at, tweet.id, tweet.user.name, tweet.full_text.encode("utf-8")]
csvWriter.writerow(tweets)
data = {"created": created, "id": id, "user": user, "text": text}
df = pd.DataFrame(data)
df
Из этого кода будет получен следующий результат:
А данные парсинга будут находиться в каталоге "C:/ Users/User/#horror.csv". Вот результаты парсинга данных в формате csv:
Извините, если в объяснении есть недостатки, ошибки или недостаточная ясность.