З більш ніж 666 мільйонами активних користувачів, перший Twitter, або новий бренд Xодна з найпопулярніших платформ соціальних мереж і цінне джерело інформації для бізнесу, дослідників та приватних осіб. Однак вилучення та фільтрація даних вручну з величезного масиву даних Twitter є надто складним і не функціональним процесом.

Скрейпінг Twitter передбачає використання програмного забезпечення або скриптів для збору даних з платформи. Ви можете проаналізувати ці дані, щоб отримати безцінну інформацію про трендові теми та хештеги, розмови, взаємодії, що відбуваються на платформі, та поведінку користувачів.
Зібрана інформація може бути ретельно проаналізована для різних цілей, таких як аналіз настроїв, дослідження ринку та моніторинг соціальних мереж. У цій статті ми розглянемо різні аспекти вишкрібання Дані Twitter за допомогою існуючих методів, від скриптів до програмного забезпечення без коду, пов'язані з цим витрати, а також умови законності та етики.
Застереження. Цей матеріал був розроблений виключно в інформаційних цілях. Він не є схваленням будь-якої діяльності (в тому числі незаконної), продуктів або послуг. Ви несете повну відповідальність за дотримання чинного законодавства, включаючи закони про інтелектуальну власність, під час використання наших послуг або покладаючись на будь-яку інформацію, що міститься тут. Ми не несемо жодної відповідальності за шкоду, що виникла внаслідок використання наших послуг або інформації, що міститься тут, у будь-який спосіб, за винятком випадків, коли це прямо передбачено законодавством.
Зміст
Які типи даних можна отримати з Twitter?
Ви можете витягувати різні типи даних Twitter. Ось три основні типи даних для вилучення з Twitter:
- Твіти: Ви можете збирати конкретні дані з відфільтрованих твітів на основі профілів, наприклад, їхні вподобання, відповіді, ретвіти та вказані URL-адреси.
- Профілі користувачів: Будь-яка інформація з публічного профілю користувача може бути зібрана, наприклад, біографія користувача, опис профілю, кількість твітів, ретвітів, кількість підписників/підписниць та зображення профілю.
- Ключові слова / хештеги: Ви можете збирати твіти, що містять певні ключові слова, хештеги або їх комбінації. Ви також можете уточнити пошук за кількістю вподобань або за конкретними датами і часом.
Законність та етичні умови використання
Занурюючись у світ скрапінгу даних, важливо розуміти правові та етичні межі.
За даними Правила та положення Twitter (Угода та політика розробника), вилучення даних без явного дозволу заборонено, про що заявлено в політиці Twitter: "Вилучення даних із Сервісів без попередньої згоди Twitter категорично заборонено.
Будь-яке зловживання API Twitter для цих цілей буде предметом примусових заходів, які можуть включати призупинення або припинення доступу.
Загальний посібник зі скрапінгу Twitter
Після короткого вступу до скрапінгу Твіттера настав час дослідити процес вилучення даних з Твіттера. Тому ми підготували для вас простий і вичерпний посібник зі скрапінгу Twitter. Будь ласка, дотримуйтесь наведених нижче кроків:
- По-перше, вам потрібно мати правильні інструменти для скрапінгу. Існує безліч варіантів на вибір. Отже, визначте, який варіант відповідає вашому бюджету та вподобанням.
- Завантажте та встановіть інструмент скрапінгу у вашій системі.
- Переконайтеся, що є багато місця для зберігання на вашому пристрої і що у вас є надійне з'єднання з Інтернетом.
- Після встановлення увійдіть, використовуючи дані свого облікового запису Twitter.
- Налаштування параметрів для вилучення даних з Twitter є важливим кроком, який дозволяє витягувати дані на основі ключових слів, хештегів, дат і часу, місцезнаходження, URL-адрес тощо.
- Після запуску інструменту скрейдера залишиться велика кількість даних. Ви можете експортувати дані в різні формати файлів (xlsx, CSV, JSON тощо).
- На останньому етапі ви повинні проаналізувати експортовані дані, щоб отримати уявлення про тему, яка вас цікавить.
Інструменти та методи вилучення даних з Twitter
Ми розглянули деякі доступні в Інтернеті інструменти для скрепінгу, починаючи з офіційних сайтів і закінчуючи Скребок для Твіттера до сторонніх сервісів і навіть бібліотек Python з відкритим вихідним кодом, і перерахували їх нижче.
4.1. Скрепери Twitter на основі API
Перший метод, який ми розглянемо, - це скрепери Twitter на основі API, до яких належать Twitter API V2, Apify, Brightdata і Scrapingdog.
4.1.1. Twitter API V2
Twitter API v2 - це остання версія API Twitter, офіційного та одного з найпоширеніших API для розробників, які створюють додатки з соціальною взаємодією, або дослідників/осіб, які збирають дані для своїх конкретних цілей. Використання нових API дозволяє без особливих зусиль відстежувати та аналізувати живі розмови в соціальних мережах.
Нещодавно Twitter додав деякі нові функції, такі як кінцеві точки, параметри корисного навантаження для твітів, набори ідентифікаторів розмов та анотації. Ці зміни є досить вражаючими. Однак нова структура ціноутворення викликала серйозне занепокоєння у розробників та сторонніх додатків. З новою структурою ціноутворення доступ до послуг різко скоротився, а ціни на них різко зросли.
Тарифні плани Twitter/X API v2 мають три рівні: Безкоштовний, Базовийта Enterprise.
- На безкоштовному рівні розробники можуть розміщувати до 1500 твітів на місяцьпризначений тільки для запису і тестування API Twitter.
- Базовий рівень витрат $100 на місяць і дозволяє розробникам публікувати до 3 000 твітів на місяць на рівні користувача та 50 000 твітів (з лімітом читання 10 000) на рівні додатків.
- Шина Enterprise включає більш розширені функції, призначені для бізнесу. Однак, тарифний план Enterprise вимагатиме від розробників/підприємств непомірно високу ціну, а саме майже 42000$ на місяць.
4.1.2. Apify
За допомогою Twitter Scraper від Apify ви можете витягувати інформацію з загальнодоступних даних Twitter, таких як хештеги, теми, відповіді, зображення тощо. Нещодавні зміни в Twitter наклали нові обмеження на перегляд і вилучення твітів на цій платформі, оскільки користувачі зможуть витягувати публічну інформацію лише до 100 твітів з одного профілю. Цей скрепер не може витягувати найновіші твіти, але може витягувати найбільш вподобані. Витягнуті дані доступні у форматах HTML, JSON, Excel та CSV.
Наступний малюнок ілюструє щомісячну вартість послуг Apify. Він також пропонує знижку 10% на річний план. Для отримання додаткової інформації відвідайте Апіфікувати ціноутворення.

4.1.3. Brightdata

Bright Data is a data collection platform that offers web scraping tools such as proxy servers, APIs, and no-code solutions. Bright Data’s Web Scraper gives users the ability to extract data from public Twitter profiles, including images, videos, tweets, hashtags, and more.
Ціни починаються з щомісячного 500$ на 151000 сторінок. Bright Data Twitter скрейсер для збору даних сумісний з усіма веб-сервісами і виводить свої дані у форматі Excel. Він також пропонує 7-денну пробну версію, і ви можете протестувати платформу, перш ніж заплатити 500 баксів.
Готові підняти свій скрейпер Twitter на новий рівень?
4.1.4. Собака-скребок
Scrapingdog - це API для веб-скрепінгу, який допомагає вам сканувати будь-який веб-сайт, включаючи Twitter. Він дозволяє сканувати твіти, використовуючи ідентифікатори твітів, або сканувати публічні сторінки, щоб витягти такі дані, як кількість підписників, кількість фоловерів і посилання на веб-сайти.
Зіскрібати Twitter коштує 0.0009$ за сторінку у стандартному плані, що є одним з найкращих співвідношень ціни та якості порівняно з іншими провідними скребками для Твіттера. Вони також надають безкоштовну пробну версію; ви можете скасувати підписку в будь-який час і легко повернути свої гроші. Щоб дізнатися більше про те, як вилучати дані за допомогою Scrapingdog, ви можете відвідати Документація API скрепінгу Twitter Scraping.

4.2. Бібліотеки та пакети Python для скрапінгу Twitter
Тепер, коли ви знайомі з API Twitter і такими програмами, як Apify, настав час поглянути на бібліотеки та пакети Python для скрепінгу Twitter.
4.2.1. Твіпі.
Tweepy - це пакет Python з відкритим вихідним кодом, який дозволяє розробникам безперешкодно та прозоро отримувати доступ до кінцевих точок Twitter. Однак, ви повинні знати, що Twitter наклав обмеження на кількість запитів, що надсилаються до X/Twitter API, де 900 запитів дозволяється кожні 15 хвилин. У цьому розділі ми розглянемо функціональність Tweepy і наведемо простий приклад.
Для початку встановіть пакет Tweepy за допомогою команди "pip install Tweepy" у вашому середовищі розробки Python, а потім імпортуйте Tweepy. Наступним кроком буде реєстрація вашого клієнтського додатку у Twitter. Створіть новий додаток. Після завершення ви отримаєте токен на пред'явника.
|
1 2 |
піп install твіппі. імпорт твіппі. |
Далі ви повинні створити екземпляр "Клієнт", щоб передати токен пред'явника споживача, який ви отримали з API Twitter.
У змінній запиту ми вказали поле, згадку та хештег, як показано на прикладі.
|
1 2 3 |
клієнт = твіппі..Клієнт(bearer_token='bearer_token') запит = 'query @mentions #hashtags' |
Для пошуку твітів за останні сім днів ви можете скористатися функцією search_recent_tweets, доступною в Tweepy. Щоб вказати дані, які ви шукаєте, вам потрібно задати пошуковий запит.
|
1 2 |
recent_tweets = клієнт.search_recent_tweets(запит=запит, tweet_fields=['tweet_field_1', 'tweet_field_2'], max_results=100) |
Якщо у вас є доступ до треку продуктів академічних досліджень, ви можете отримати твіти, старші за 7 днів. З повного архіву загальнодоступних твітів.
|
1 2 |
твіти = клієнт.пошук_всіх_твітів(запит=запит, tweet_fields=['tweet_field_1', 'tweet_field_2'], max_results=100) |
Ви можете експортувати результати за допомогою наступного коду.
|
1 2 3 4 5 |
за твітнути в твіти.дані: друк(твітнути.текст) якщо Лен(твітнути.context_annotations) > 0: друк(твітнути.context_annotations) |
У Tweepy також є безліч функцій, здатних виконувати різні завдання в більш складних і специфічних випадках.
4.2.2. Snscratch
Ще один спосіб отримати інформацію з Twitter, не покладаючись на API, - це Snscrape. Він дозволяє отримувати основну інформацію, таку як профілі користувачів, вміст твітів, джерела тощо. На відміну від Tweepy, немає обмежень на кількість твітів, які ви можете вилучити, або на дати твітів, і ви можете вилучати старі дані з Twitter. Оскільки Snscrape не підключений до API Twitter, йому не вистачає функціональності на рівні Tweepy. Перегляньте наш повний посібник з Snscratch.
У цьому розділі ми також розглянемо базовий приклад вилучення деяких даних з Twitter за допомогою Snscrape у Python.
По-перше, вам слід встановити Snscrape. Зверніть увагу, що для його роботи у вас має бути встановлений Python 3.8 або новішої версії.
|
1 2 |
піп install зішкріб |
На наступному кроці встановіть наступні бібліотеки.
|
1 2 3 |
імпорт зішкріб.модулі.твіттер як sntwitter імпорт панди як pd |
Ми надсилаємо запит (у нашому випадку "query") за допомогою функції "TwitterSearchScraper(query).get_items" і отримуємо елементи з пошуку так само, як і результати з пошукового рядка Twitter.
|
1 2 3 4 5 6 |
запит = "query" за твітнути в sntwitter.TwitterSearchScraper(запит).get_items(): друк(вари(твітнути)) перерва |
Існують й інші методи, які можна використовувати для вилучення даних з Twitter, наприклад: TwitterSearchScraper, TwitterUserScraper, TwitterProfileScraper, TwitterHashtagScraper, TwitterTweetScraperMode, TwitterTweetScraper, TwitterListPostsScraper, TwitterTrendsScraper.
Просунуті техніки вишкрібання та виклики
Коли базові методи скрепінгу досягають своїх меж через складний захист Twitter, необхідні передові методи. Сучасний інтерфейс Twitter значною мірою покладається на рендеринг JavaScript і реалізує кілька рівнів виявлення ботів, що робить традиційні HTTP-запити недостатніми для надійного збору даних.
Робота з динамічним контентом у безголових браузерах
Хронологія Twitter завантажується динамічно за допомогою JavaScript, тобто вміст, який ви бачите, не присутній у початковій HTML-відповіді. Безголові браузери імітують реальну взаємодію з користувачем, відображаючи JavaScript і обробляючи динамічне завантаження контенту.
Драматург проти селену: Playwright пропонує кращу продуктивність і надійнішу роботу з сучасними веб-додатками, тоді як Selenium залишається усталеним вибором з широкою підтримкою спільноти.
Ось практичний приклад використання Playwright для сканування динамічно завантажених твітів:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
імпорт асиміляція від драматург.async_api імпорт async_playwright імпорт json async def scrape_twitter_profile(ім'я користувача): async з async_playwright() як p: # Запуск безголового браузера браузер = зачекайте. p.хром.запуск(безголовий=Правда.) контекст = зачекайте. браузер.новий_контекст( user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" ) сторінка = зачекайте. контекст.new_page() Спробуй: # Перейти до профілю зачекайте. сторінка.goto(f"https://twitter.com/{ім'я користувача}") # Зачекайте на завантаження твітів зачекайте. сторінка.wait_for_selector('[data-testid="tweet"]', тайм-аут=10000) # Прокрутіть, щоб завантажити більше твітів за i в діапазон(3): зачекайте. сторінка.оцінювати("window.scrollTo(0, document.body.scrollHeight)") зачекайте. сторінка.wait_for_timeout(2000) # Вилучення даних твітів твіти = зачекайте. сторінка.оцінювати(""" () => { const tweetElements = document.querySelectorAll('[data-testid="твітнути"]'); return Array.from(tweetElements).map(tweet => { const textElement = tweet.querySelector('[data-testid="tweetText"]'); const timeElement = tweet.querySelector('time'); return { { return { text: textElement ? textElement.internalText : '', timestamp: timeElement ? timeElement.getAttribute('datetime') : '', url: window.location.href }; }); } """) повернення твіти за винятком Виняток як e: друк(f"Помилка вилучення {ім'я користувача}: {e}") повернення [] нарешті: зачекайте. браузер.близько() # Використання твіти = асиміляція.бігти(scrape_twitter_profile("elonmusk")) друк(json.звалища(твіти[:3], відступ=2)) |
Основні переваги безголових браузерів включають обробку рендерингу JavaScript, автоматичне керування файлами cookie та сесіями, а також обхід базового виявлення ботів за допомогою реалістичних відбитків пальців браузера.
Ресурсні міркування: Безголові браузери споживають значно більше пам'яті та процесора порівняно з простими HTTP-запитами. Для великомасштабних операцій розгляньте можливість запуску декількох екземплярів браузера на різних серверах або використання пулів браузерів.
В обхід заходів протидії скребку
Twitter використовує складні методи виявлення ботів, які виходять за рамки простого обмеження швидкості. Розуміння цих заходів допомагає розробити ефективні контрзаходи.
Поширені методи боротьби зі скребками
Обмеження ставок: Twitter monitors request frequency per IP address, implementing both short-term (requests per minute) and long-term (daily quotas) limits. Learn more in Web Scraping Rate Limiting: The Fix.
Блокування IP-адреси: Підозрілі IP-адреси тимчасово або назавжди блокуються. IP-адреси центрів обробки даних піддаються більш ретельній перевірці, ніж домашні адреси.
Проблеми з CAPTCHA: Автоматичний показ CAPTCHA при виявленні ботоподібної поведінки. Сучасні CAPTCHA використовують поведінковий аналіз, який виходить за рамки простого розпізнавання зображень.
Відбитки пальців у браузері: Аналіз характеристик браузера, включаючи агента користувача, роздільну здатність екрана, встановлені плагіни та шаблони виконання JavaScript.
Ефективні контрзаходи
Стратегія ротації довірених осіб: Використання таких сервісів, як RapidSeedbox, надає доступ до резидентних IP-пулів, які виглядають як трафік легітимних користувачів. Резидентні проксі-сервери з їхньої 6,9+ мільйона IP-мережі значно знижують рівень виявлення порівняно з проксі-серверами центрів обробки даних.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
імпорт випадковий імпорт час від itertools імпорт цикл # Налаштування обертання проксі-сервера proxy_list = [ "http://user:[email protected]:8080" ] proxy_cycle = цикл(proxy_list) def get_next_proxy(): повернення наступний(proxy_cycle) # Впроваджуйте у свій скрепер async def scratch_with_rotation(): за i в діапазон(10): довірена особа = get_next_proxy() # Налаштуйте браузер/сесію з новим проксі # Виконати запит на вишкрібання # Додати випадкову затримку зачекайте. асиміляція.сон(випадковий.форма(5, 15)) |
Ротація агентів користувачів: Змінюйте сигнатури браузерів, щоб уникнути виявлення шаблонів. Використовуйте реальні рядки агента користувача з різних браузерів та операційних систем.
|
1 2 3 4 5 6 7 8 9 |
USER_AGENTS = [ "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, як Gecko) Chrome/120.0.0.0 Safari/537.36", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, як Gecko) Chrome/120.0.0.0 Safari/537.36", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0" ] def get_random_user_agent(): повернення випадковий.вибір(USER_AGENTS) |
Поведінкові патерни: Імітує поведінку людини в браузері зі змінними затримками, реалістичними шаблонами прокрутки та випадковими діями, що не пов'язані зі скролінгом.
Керування сесіями: Підтримуйте постійні сеанси за допомогою належної обробки файлів cookie та уникайте створення надто великої кількості нових сеансів з одного IP-адреси.
Удосконалене уникнення виявлення
Час запиту: Впроваджуйте експоненціальне відставання при досягненні лімітів швидкості. Почніть з довших затримок і поступово зменшуйте їх залежно від рівня успішності.
Узгодженість геолокації: Використовуючи проксі-сервери, переконайтеся, що ваші запити підтримують географічну узгодженість. Не перестрибуйте між країнами швидко.
Керування відбитками пальців у браузері: Використовуйте такі інструменти, як undetected-chromedriver або стелс-плагіни, щоб зменшити ефективність відбитків пальців браузера.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
від селен імпорт веб-драйвер від selenium_stealth імпорт невидимість def створити_стелс-драйвер(): варіанти = веб-драйвер.ChromeOptions() варіанти.додати_аргумент("безголовий") варіанти.додати_аргумент("--не-пісочниця") варіанти.додати_аргумент("--disable-dev-shm-usage") водій = веб-драйвер.Хром(варіанти=варіанти) невидимість(водій, мови=["en-US", "en"], постачальник="Google Inc.", платформа="Win32", webgl_vendor="Інтел Інкорпорейтед"., рендеринг="Intel Iris OpenGL Engine", fix_hairline=Правда., ) повернення водій |
Обробка помилок: Впровадити гнучку обробку помилок, яка може розрізняти тимчасові блокування, постійні заборони та технічні проблеми.
Поєднання резидентних проксі-сервісів, таких як RapidSeedbox, належних методів стелс браузера та реалістичних поведінкових моделей створює надійну основу для масштабного збору даних у Twitter, мінімізуючи при цьому ризики виявлення.
Пам'ятайте, що заходи протидії ботам у Twitter продовжують розвиватися, тому для успішного скрапінгу необхідна постійна адаптація цих методів до поточної поведінки платформи.
ЧаПи
Скрейпінг у Твіттері перебуває у правовій "сірій зоні". Хоча Умови надання послуг Twitter забороняють автоматизований збір даних, вилучення загальнодоступних даних не є автоматично незаконним.
Юридичні ризики включають в себе:
1. Порушення авторських прав на вміст користувача
2. Порушення CFAA в деяких юрисдикціях
3. Питання дотримання вимог GDPR щодо персональних даних
Безпечніший підхід: Використовуйте офіційний API Twitter, коли це можливо, консультуйтеся з юрисконсультом для великих проектів і зосередьтеся на загальнодоступних даних для законних дослідницьких цілей.
Ні, але кодування дає кращі результати.
Опції без коду: Інструменти автоматизації браузерів та візуальні конструктори робочих процесів працюють для базового скрапінгу, але вони обмежені в швидкості та гнучкості.
Рішення для кодування: Python з Selenium або спеціалізованими бібліотеками забезпечує більший контроль, кращу боротьбу з ботами та вищі показники успішності.
Найкращий підхід: Почніть з інструментів без коду, щоб перевірити свої потреби, а потім вивчіть основи написання скриптів на Python для серйозного збору даних.
Безкоштовний рівень API Twitter має серйозні обмеження:
1. Обмеження по тарифам: Дуже низькі щомісячні квоти на запити
2. Історичні дані: Обмежено останніми твітами (зазвичай за останній тиждень)
3. Oсобливості: Відсутність розширеної аналітики та показників залученості
4. Доступ: Потребує схвалення заявки
Більшість дослідницьких та бізнес-кейсів перевищують ліміти безкоштовного рівня, що робить необхідним використання платних тарифних планів або альтернативних методів.
Історичні дані Twitter потребують спеціальних інструментів, оскільки звичайний перегляд показує лише нещодавній контент.
Найкращий інструмент: Snscratch - Бібліотека Python для доступу до твітів минулих років з фільтрацією діапазону дат.
Інші варіанти:
1. Бібліотека TwitterScraper
2. API для академічних досліджень (потрібен інституційний доступ)
3. Сторонні сервіси історичних даних
Порада: Скремблювання історичних даних відбувається повільніше і вимагає ретельного обмеження швидкості, щоб уникнути блокування.
Основні практики:
1. Обмеження швидкості: Мінімум 1-2 секунди між запитами
2. Поважайте robots.txt: Дотримуйтесь інструкцій платформи
3. Мінімізація даних: Збирайте тільки необхідну інформацію
4. Правильні затримки: Використовуйте ротацію IP та резидентні проксі-сервери
5. Обробка помилок: Зупинити скремблювання, якщо заблоковано або обмежено швидкість
Ключовий принцип: Завжди спочатку використовуйте офіційні API, а потім відповідально підходьте до скрапінгу, поважаючи інфраструктуру Twitter і конфіденційність користувачів.
Висновок
Twitter є цінним джерелом соціологічної інформації в Інтернеті. Використовуючи інформацію, отриману з Twitter, ви можете адаптувати свої плани для збільшення продажів і вдосконалення маркетингових стратегій. У цій статті ми представили детальний огляд різних аспектів і методів вилучення даних з Твіттера для вилучення даних, які можуть бути цінними для бізнесу або досліджень.
Підводячи підсумок, відповідно до нових обмежень, накладених на Twitter API v2, поряд з високою вартістю, вибір найкращого скрепера буде складним завданням. Ви можете скористатися більш розширеними можливостями Twitter API або сторонніх додатків і бібліотек Python (Tweepy), які безпосередньо підключаються до Twitter API.
Але кількість запитів, які ви можете зробити, суворо обмежена. З іншого боку, якщо ви прагнете вилучити загальнодоступні дані, і базові функції задовольняють ваші потреби, такі варіанти, як бібліотека Snscrape Python, можуть бути чудовим вибором.

0Коментарі