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

    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
    Ответ написан
    5 комментариев