Поиск, фильтрация и многое другое

Введение

Facebook, Instagram и Twitter считаются ведущими социальными сетями. По данным BusinessofApps, у Facebook, Instagram и Twitter ежемесячно насчитывается 2700, 1160 и 330 миллионов активных пользователей соответственно. Глядя на эти цифры, мы можем сказать, что социальные сети стали одним из крупнейших источников данных.

Хотя Facebook и Instagram имеют более активных пользователей, Twitter остается самой популярной платформой для академических исследователей и разработчиков. Основной причиной этого может быть доступность и понимание данных, предоставляемых Twitter.

По состоянию на 2018 год, по данным Oberlo, каждый день отправляется 500 миллионов твитов. Это соответствует 5787 твитам в секунду. Вначале Twitter использовался только как текстовая платформа, но с ростом популярности он также используется для обмена фотографиями и видео. Помимо того, что они делятся своими мыслями и идеями, многие люди используют Twitter в качестве обучающей и общественной платформы.

Аккаунт разработчика Твиттера

Прежде чем использовать Twitter API, нам нужно настроить учетную запись разработчика и создать проект для получения ключей API. Если у вас нет учетной записи Twitter, вам необходимо создать ее, а затем перейти в Twitter Developers Dashboard и войти в систему. Вы увидите панель управления, как показано на изображении ниже:

Нажмите на кнопку «Создать проект»; это приведет вас к экрану ниже. Назовите свой проект. Вы можете дать ему любое имя, но оно должно быть уникальным. Я назвал проект MyBlogProject.

После этого выберите причину этого проекта и запишите некоторые описания проекта. (Я думаю, это не обязательно, но они все равно спрашивают об этом.)

В конце нужно просто указать название приложения. Опять же, это не имеет значения, но оно должно быть уникальным. Как только вы нажмете «Завершить», вы получите ключи API, как показано на изображении ниже:

Вы можете скопировать эти ключи сейчас или получить их позже.

Не сообщайте никому свои ключи.

Теперь, если вы нажмете «Проекты и приложения», а затем просмотрите на левой боковой панели, вы увидите все свои проекты и автономные приложения. Вы можете использовать оба или любой из «Проектов» или «Автономных приложений».

В этом руководстве мы будем использовать приложение, созданное в Project. Вы можете видеть, что у меня есть как приложения внутри проекта, так и отдельное приложение. Раньше был только один вид Twitter API — V1.1, но в то время, когда я писал блог, новая версия V2 находилась в стадии раннего доступа. Итак, для проекта у меня есть доступ к обеим версиям, тогда как для отдельного приложения у меня был доступ только к версии 1.1.

Исследование версии 1.1

Каждая конечная точка в V1.1 API начинается с api.twitter.com/1.1/search/tweets.json. Мы можем использовать различные параметры запроса в соответствии с нашими потребностями. В этом руководстве мы используем стандартный API, который накладывает некоторые ограничения на использование. Согласно официальной документации, существует множество доступных параметров запроса, а именно:

  1. q
  2. geocode
  3. lang
  4. result_type
  5. count
  6. include_entities
  7. until
  8. since_id и max_id
  9. locale (в настоящее время действует только ja, поэтому мы будем избегать этого.)
  10. tweet_mode (это не было задокументировано в официальных документах.)

Из вышеупомянутых параметров только q является обязательным параметром запроса, а все остальные являются необязательными параметрами.

1. Параметр запроса: q

Параметр запроса q используется для поиска определенных терминов, хэштегов и пользователей. Например, мы можем использовать #python для получения всех твитов, содержащих #python, или мы можем использовать "web development" как одно слово для получения всех твитов, в которых есть слово «веб-разработка». Более того, используя @elonmusk, мы можем получить все твиты и ретвиты пользователя Илона Маска.

Примечание. Стандартный API предоставит вам данные только за последние семь дней, и если вы не используете счетчик, он вернет только 15 данных.

  1. Пример получения твитов с хэштегом: python
    https://api.twitter.com/1.1/search/tweets.json?q=%23python
  2. Пример получения твитов, содержащих: «веб-разработка» https://api.twitter.com/1.1/search/tweets.json?q="web development"
  3. Пример получения твитов с именем пользователя: elonmusk https://api.twitter.com/1.1/search/tweets.json?q=@elonmusk

Здесь, в первом примере, вы можете видеть, что мы использовали %23 вместо символа #. Нам нужно использовать такое представление, так как мы не можем использовать некоторые символы непосредственно в нашем URI. По умолчанию Twitter API предоставляет усеченные данные твитов. Итак, чтобы получить полные твиты, мы должны передать параметр запроса tweet_mode=extended.

2. Параметр запроса: «геокод»

Как только мы решили, что мы хотим искать, и какой хэштег, ключевые слова или пользователя искать, мы можем искать твиты для определенной геолокации, используя параметр geocode. Этот параметр запроса является необязательным, поэтому его можно использовать по своему усмотрению.

Теперь, если я хочу выполнить поиск по ключевому слову «питон вокруг Бангалора», мне нужно передать широту, долготу и радиус. Итак, я передам параметр запроса как geocode=12.97194,77.59369,1mi. Здесь 12.97194,77.59369 и 1mi — широта, долгота и радиус соответственно. Где 1mi означает 1 милю. Мы также можем использовать км (километры).

Чтобы получить твиты с ключевым словом python и в радиусе мили от Бангалора, можно использовать следующий URI: https://api.twitter.com/1.1/search/tweets.json?q=python&geocode=12.97194,77.59369,1mi

3. Параметр запроса: «lang»

Мы можем получать твиты на определенном языке. Например, мы можем получить твиты с ключевым словом «Индия» и языком хинди. Чтобы получить такие данные, мы можем использовать параметр запроса lang, как показано ниже: https://api.twitter.com/1.1/search/tweets.json?q=India&lang=hi

Можно использовать следующую страницу Википедии, чтобы получить список всех языков и их соответствующих кодов.

4. Параметр запроса: «result_type»

В некоторых ситуациях нам нужны самые последние твиты, а иногда бывают ситуации, когда нам нужны самые популярные твиты. В такой ситуации мы можем использовать параметр запроса result_type. Этот параметр запроса является необязательным, как и geocodeis.

Мы можем использовать смешанный, недавний или популярный как result_type, где смешанный — это значение по умолчанию.

5. Параметр запроса: «count»

Параметр count используется, когда нам нужно определенное количество твитов. По умолчанию мы получим 15 твитов, но в одном запросе мы можем получить до 100 твитов.

6. Параметр запроса: «include_entities»

Можно получить некоторые дополнительные данные, передав параметру запроса include_entities значение true.

Использование показанного ниже URI дает дополнительные данные поля entities.
https://api.twitter.com/1.1/search/tweets.json?q=%22web%20development%22&include_entities=true&count=1

Данные сущностей:

Обратите внимание, что я использовал %22 вместо двойных кавычек (") и %20 вместо пробела.

7. Параметр запроса: «до»

Чтобы получить все твиты, созданные до определенной даты, мы можем использовать параметр запроса until. Дата должна быть в формате ГГГГ-ММ-ДД. Имейте в виду, что поисковый индекс имеет ограничение в семь дней (для Standard API). Другими словами, не будут найдены твиты для даты старше одной недели.

Когда я писал этот блог, было 2021-03-28, поэтому я могу запросить данные до 2021-03-22. Если я запрошу дату 2021-03-21, она даст мне пустой массив. Можно использовать следующий формат для использования параметра until:
https://api.twitter.com/1.1/search/tweets.json?q=python&until=2021-03-22

8. Параметр запроса: «since_id» и «max_id»

Правда, в документации я не нашел, как можно получить/сгенерировать since_id и max_Id.

Согласно документации, если мы use _sinceid, он вернет результаты с идентификатором, превышающим (то есть более новым, чем) указанный идентификатор. С другой стороны, _maxid будет возвращать результаты с идентификатором меньше (то есть старше) или равным указанному идентификатору.

Логический синтаксис

Мы можем использовать логические операторы и механизмы группировки, чтобы получить более конкретные твиты. Мы можем использовать логические операторы И, ИЛИ и НЕ(-). Мы можем использовать скобки use _round для группировки нескольких ключевых слов и фильтров.

Если мы хотим искать твиты, которые содержат python и разработчиков, мы можем написать q=python%20developer. Это будет искать твиты с обоими ключевыми словами python и разработчик. Здесь обратите внимание, что Python и разработчик не должны объединяться.

Если мы хотим их вместе, мы можем написать q=%22python%20developer%22 или q="python developer". Если нам нужны твиты либо с Python, либо с разработчиком, мы можем написать q=(python OR developer).

Если мы хотим игнорировать твиты с некоторыми ключевыми словами, мы можем использовать дефис (-). Итак, чтобы получать твиты с ключевым словом python или Django и игнорировать разработчика, мы можем написать запрос типа q=(python OR Django) -developer.

Примечание. В нашем запросе можно использовать несколько операторов ИЛИ и отрицание. Чтобы использовать несколько отрицаний вместо -(iPhone OR iMac OR MacBook), используйте следующее: -iPhone -iMac -MacBook.

При использовании нескольких операций может возникнуть некоторая неопределенность. Например:

  • apple OR iPhone iPad будет оцениваться как apple OR (iPhone iPad)
  • iPad iPhone OR android будет оцениваться как (iPhone iPad) OR android

Чтобы устранить неопределенность и убедиться, что ваши правила оцениваются должным образом, сгруппируйте термины вместе со скобками, где это уместно. Например:

  • (apple OR iPhone) iPad
  • iPhone (iPad OR android)

Дополнительные фильтры

Согласно другим онлайн-ресурсам и официальной документации, мы можем фильтровать данные по ответам, ретвитам, а также на основе того, верифицирован аккаунт или нет.

Чтобы использовать эти фильтры, нам нужны логические операторы И и ИЛИ. Он делает то же самое, как следует из названия. Чтобы понять больше, мы можем рассмотреть несколько примеров.

  1. Получать твиты с ключевым словом python и исключать ретвиты: https://api.twitter.com/1.1/search/tweets.json?q=python AND -filter:retweets
    или
    https://api.twitter.com/1.1/search/tweets.json?q=python AND exclude:retweets
  2. Получать твиты с ключевым словом python и исключать ответы: https://api.twitter.com/1.1/search/tweets.json?q=python AND -filter:replies
    или
    https://api.twitter.com/1.1/search/tweets.json?q=python AND exclude:replies
  3. Получить твиты с ключевым словом python и исключить ретвиты и ответы: https://api.twitter.com/1.1/search/tweets.json?q=python AND -filter:retweets AND -filter:replies
  4. Получайте твиты с ключевым словом «apple iPad» и от подтвержденного аккаунта: https://api.twitter.com/1.1/search/tweets.json?q="apple iPad" AND filter:verified

Еще несколько файлов:

Есть много других фильтров, но не стоит упоминать их все здесь. Все остальные фильтры вы можете найти в официальной документации.

Примечание. Здесь введите имя пользователя без @

Последний пример: предположим, что мы хотим получить последние 50 твитов с ключевыми словами «разработчик Python» И Django, игнорируя flask. Нам нужны только твиты и ответы (другими словами, нам не нужны ретвиты). Нам нужны полные твиты на английском (en) языке в районе Бангалора, и нам не нужны дополнительные сущности.

Решение:

https://api.twitter.com/1.1/search/tweets.json?q=("python developer" AND  django) -flask AND exclude:retweets&tweet_mode=extended&lang=en&count=50&geocode=12.97194,77.59369,10mi

Заключение

Я попытался объяснить все методы и фильтры, которые можно использовать для получения твитов с помощью Twitter API. Я написал этот блог, чтобы познакомить разработчиков со стандартным Twitter API. Может быть много других параметров запроса и фильтров, не упомянутых здесь.

Рекомендации

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

  1. Как освоить поиск в Твиттере: основные логические операторы и фильтры
  2. "Переполнение стека"
  3. Поиск твитов
  4. Правила и фильтрация: Премиум v1.1
Want to Connect?
Let me know if you need any help or want to discuss something. Reach out to me on Twitter or LinkedIn.

Посетите этот блог, если хотите узнать, как использовать Twitter Search API в JavaScript 👇