Как парсить X (Twitter) с помощью Playwright и headless-браузера

X.com (бывший Twitter) — один из лучших источников данных о том, чем живёт аудитория: какие темы обсуждает, что лайкает и на какие бренды реагирует. Через посты пользователей можно отследить тренды, понять настроение аудитории и даже подсмотреть, как работают конкуренты.

Но у официального API есть ограничения: часть данных недоступна, да и лимиты часто мешают. Поэтому многие используют браузерную автоматизацию — запускают headless-браузер, заходят на страницы X и собирают нужную информацию напрямую.

Разберём, как можно скрейпить твиты, профили и таймлайны с помощью Playwright и антидетект-браузеров вроде Octo.

Зачем вообще парсить X (Twitter)​

Twitter — это огромный массив открытых данных, где всё крутится вокруг мнений, эмоций и трендов. Сбор таких данных помогает в разных задачах:
  • Следить за конкурентами. Можно смотреть, что они постят, какие акции запускают, как реагирует аудитория.
  • Отлавливать тренды. По хештегам видно, что сейчас на хайпе. Это помогает вовремя перестроить контент или продукт.
  • Понимать клиентов. Отзывы и упоминания — источник инсайтов. Часто именно из таких данных видно, что людям нравится, а что раздражает.

Как не попасть под блокировку​

X довольно внимательно следит за подозрительной активностью, поэтому при скрейпинге важно действовать аккуратно. Вот базовые советы:
  • Делайте паузы между запросами и немного рандомизируйте их, чтобы поведение выглядело “человечнее”.
  • Используйте качественные прокси и не шлите слишком много запросов с одного IP.
  • Работайте через антидетект-браузер — например, Octo Browser. Он позволяет создавать виртуальные профили с разными цифровыми отпечатками (фингерпринтами), и для X каждый профиль будет выглядеть как отдельный пользователь.
  • Для каждого аккаунта лучше завести отдельный профиль + отдельный прокси.
  • Если регистрируете новый аккаунт, прогрейте его: соберите куки, немного “поживите” им в сети. Octo Browser это умеет делать автоматически или через импорт готовых cookies.
Попробовать Octo Browser бесплатно можно по промокоду MIPPED.

Пример парсинга твита через Playwright​

Чтобы скрейпить посты из X.com, нужно загружать веб-страницы через headless-режим браузера, например Octo, и перехватывать фоновые запросы. Вот как выглядит скрейпинг твитов с помощью опенсорсной бибилиотеки Playwright:

Python:
from playwright.sync_api import sync_playwright
def scrape_tweet(url: str) -> dict:
    """
    Scrape a single tweet page for Tweet thread e.g.:
    https://twitter.com/Scrapfly_dev/status/1667013143904567296
    Return parent tweet, reply tweets and recommended tweets
    """
    _xhr_calls = []
    def intercept_response(response):
        """capture all background requests and save them"""
        # we can extract details from background requests
        if response.request.resource_type == "xhr":
            _xhr_calls.append(response)
        return response
    with sync_playwright() as pw:
        browser = pw.chromium.launch(headless=False)
        context = browser.new_context(viewport={"width": 1920, "height": 1080})
        page = context.new_page()
        # enable background request intercepting:
        page.on("response", intercept_response)
        # go to url and wait for the page to load
        page.goto(url)
        page.wait_for_selector("[data-testid='tweet']")
        # find all tweet background requests:
        tweet_calls = [f for f in _xhr_calls if "TweetResultByRestId" in f.url]
        for xhr in tweet_calls:
            data = xhr.json()
            return data['data']['tweetResult']['result']
if __name__ == "__main__":    print(scrape_tweet("https://twitter.com/Scrapfly_dev/status/1664267318053179398"))

Скрипт загружает твит через headless-браузер и перехватывает фоновые запросы. Затем фильтрует те, которые содержат данные твита.

Обратите внимание: Для скрейпинга нужно дождаться, когда твиты появятся на HTML-странице. Это знак, что фоновые запросы завершены.

Парсинг профилей и таймлайнов​

Принцип тот же — открываете нужную страницу и вытягиваете данные. Например, для профиля можно собрать:
  • имя и описание пользователя,
  • количество подписчиков и подписок,
  • дату создания аккаунта.
Для поиска или ленты всё работает аналогично: скрипт имитирует ввод запроса, нажимает Enter, скроллит страницу, подгружает новые твиты и сохраняет нужные данные.

Что делать с собранными данными​

После парсинга обычно формируется список словарей (dict), который легко выгрузить в CSV или Excel.

Дальше можно подключить аналитику:
  • Сентимент-анализ — оценить, положительные или негативные упоминания преобладают.
  • Кластеризация — сгруппировать посты по темам (“проблемы с доставкой”, “хвалят продукт” и т.п.).
  • Поиск инфлюенсеров — найти активных пользователей с большой аудиторией для сотрудничества.

Чтобы всё работало стабильно​

Резюмируем ключевые моменты безопасности:
  • Используйте прокси и распределяйте запросы.
  • Меняйте фингерпринты и работайте через антидетект-браузер.
  • Добавляйте случайные задержки между действиями.
  • Сохраняйте и используйте cookies, чтобы не терять сессию.
  • Прогревайте новые аккаунты перед основным парсингом.
В общем, Playwright + антидетект-браузер — мощная связка для аккуратного и надежного сбора данных с X.com.
 
Назад
Сверху