Не удается получить содержимое с помощью Beautiful Soup
Задание: спарсить блоки названия и лицензии видео на YouTube с помощью Beautiful Soup
По запросу result["title"] = soup.find("h1").text.strip() успешно получаем название видео.
А вот result["license"] = soup.find("ytd-metadata-row-renderer").text.strip() выдает ошибку AttributeError: 'NoneType' object has no attribute 'text'
Вот весь код:
from requests_html import HTMLSession
from bs4 import BeautifulSoup as bs
# init session
session = HTMLSession()
def get_video_info(url):
# download HTML code
response = session.get(url)
# execute Javascript
response.html.render(sleep=1)
# create beautiful soup object to parse HTML
soup = bs(response.html.html, "html.parser")
result = {}
################### FROM HERE!!!
# video title
result["title"] = soup.find("h1").text.strip()
# video license
result["license"] = soup.find("ytd-metadata-row-renderer").text.strip()
return result
################### TO HERE!!!
if __name__ == "__main__":
import argparse
parser = argparse.ArgumentParser(description="YouTube Video Data Extractor")
parser.add_argument("url", help="URL of the YouTube video")
args = parser.parse_args()
# parse the video URL from command line
url = args.url
data = get_video_info(url)
# print in nice format
print(f"Title: {data['title']}")
print(f"License: {data['license']}")
Получаем с помощью запроса в терминале: python getVideoLicense.py https://www.youtube.com/watch?v=kdmBTTAFlk0
В результате должно вывести:
Title: ТРИ МІШКИ ? | 29 варіантів як подолати стіну з мішків | Україна
License: Пісня - Rollin' (Air Raid Vehicle) (Radio Edit)
Виконавець - Limp Bizkit
Writers - Fred Durst, Kasseem Mike Dean, Redman, Earl Simmons, Clifford Smith
Ліцензію для YouTube надали - UMG (від імені студії звукозапису "Interscope"); UNIAO BRASILEIRA DE EDITORAS DE MUSICA - UBEM, UMPI, LatinAutorPerf, ASCAP, UMPG Publishing, Warner Chappell, BMI - Broadcast Music Inc., LatinAutor - Warner Chappell, CMRRA, LatinAutor - UMPG, PEDL та організації, що володіють правами на музику (25)
