Парсинг сайта Twitch выдаёт урезанный результат

Рейтинг: 0Ответов: 1Опубликовано: 12.02.2023

Хочу спарсить название стрима/канала и т.д через запрос в коде. Если в браузере, в режиме разраба смотреть код, то там можно найти все элементы и текст, который есть на странице. Я же пробую получить Html страницу через такой код:

    string htmlCode;
    
    using (WebClient client = new WebClient())
    {
        htmlCode = client.DownloadString(FullAddress);
    }

В итоге, если открыть в блокноте текст из htmlCode и поискать там, например, название трансляции, то ничего не найдёт. Если посмотреть по тегу в htmlCode, то первый <div> в нём имеет класс root, а сразу за ним идёт код стилей <style> (см. скрин 1). В браузере же имеется множество <div>, в которых и хранится весь текст со страницы, а только потом идёт тег <style> (см. скрин 2). Скрин 1 Скрин 2

В первом документе (мой запрос) 3200 строк, а во втором (который из браузера) 16600. Скорее всего Твич имеет защиту, если запрос был не из браузера, а может просто я использую неправильный тип запроса.

ВОПРОС: Можно ли как-то получить такую же страницу, которую получает браузер, чтобы из неё можно было извлечь любой текст, который видит пользователь? Если да, то прошу помощи.

P.S Если нужно, могу предоставить html код из браузера и запроса C# для сравнения.

P.P.S TwitchAPI не предлагайте, потому что там нужна авторизация для использования.

Ответы

▲ 0

Всё верно. Это веб-приложение, клиент которого (браузер) подгружает данные с сервера. Есть хорошая статья на хабре, в котором сказано об этом подробнее.

Если коротко: сервер возвращает js код, который меняет страницу в зависимости от ответа сервера.


P.s. Официальные API специально пишутся разработчиками ресурсов, что бы программы могли с лёгкостью получать данные с сайта, не используя парсеры. Некоторым не нравится, когда программа взаимодействует с сайтом напрямую (например VK) и можно поймать бан. Я предупредил.