@Bunt
Начинающий разработчик

Как получить данные из блока div в который записываются из JS?

Здравствуйте. Я изучаю python, заинтересовал парсинг элементов. Суть вопроса, как получить данные из блока div в которые генерируются через JS. Я получал данные из элементов, через BeautifulSoup и все получалось. Но при попытке получать данные из блока, я получал либо None либо []. Пример: Идет трансляция на ютуб, под прямой трансляцией есть блок: Сейчас смотрят n-е количество зрителей. Вот как получить эти цифры? Извиняюсь за неточности, надеюсь донес суть вопроса. Заранее спасибо.
  • Вопрос задан
  • 172 просмотра
Решения вопроса 1
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
BeautifulSoup на YouTube вам не поможет(хотя можно получить страницу с помощью selenium, а дальше разбирать её с помощью BeautifulSoup - но это уже другая история)
На страницах YouTube данных хранятся в Json. Их можно оттуда вырезать и работать с ними как с json. Можно попробовать банально искать с помощью питоновской функции find:
(Да простят меня питонисты за данный код))
Я не говорю что это правильно, и так нужно делать, но работает, и на том спасибо.
import requests

headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0',
			'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
}
url = 'https://www.youtube.com/watch?v=pSWOcXg703s'

response = requests.get(url,headers=headers)
html = response.text
first_1 = html.find('og:title" content="')+19
second_2 = html.find('">',first_1)
title = html[first_1:second_2]

first = html.find('videoViewCountRenderer')+72
second = html.find('"}]}',first)
views = html[first:second]

first_ = html.find('likeStatus":"INDIFFERENT","tooltip"')+37
second_ = html.find('"}},',first_)
likes = html[first_:second_].replace(' ','').split('/')

print(f'Название видео: {title}')
print(f'Сейчас смотрят: {views}')
print(f'Лайков: {likes[0]}')
print(f'Дизлайков: {likes[1]}')

На выходе:
Название видео: Elon Musk Live: Bitcoin BTC Talk, BTC Mass Adoption & SpaceX update [April, 2020]
Сейчас смотрят: 59 365
Лайков: 2 542
Дизлайков: 153
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
SpectrumData Екатеринбург
от 150 000 до 200 000 ₽
Гринатом Москва
от 150 000 ₽
DIGITAL SECTOR Краснодар
от 150 000 до 250 000 ₽