CoderCastrov logo
CoderCastrov
Анализ данных

Парсинг Twitter API

Парсинг Twitter API
просмотров
5 мин чтение
#Анализ данных
Table Of Content

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

    Создание учетной записи Twitter можно легко выполнить, посетив twitter.com, а для учетной записи разработчика нам нужно посетить developer.twitter.com и создать учетную запись разработчика. Затем в меню выберите "Projects & Apps" > "Overview" > "New Project". Приблизительно это будет выглядеть следующим образом:

    Twitter Developer

    В процессе 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".

    API Key and Secret

    После нажатия "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

    Из этого кода будет получен следующий результат:

    Output

    А данные парсинга будут находиться в каталоге "C:/ Users/User/#horror.csv". Вот результаты парсинга данных в формате csv:

    CSV Output

    Извините, если в объяснении есть недостатки, ошибки или недостаточная ясность.