Web scraping python

Необходимо спарсить название ютуб канала через ссылку. Вот код:

from bs4 import BeautifulSoup
from requests import get

driver = BeautifulSoup(get('https://www.youtube.com/channel/UCapfEzadQamVtUXGp1oDSwQ').text, 'lxml')
print(driver.head.title.text)

Возникает проблема, что в одном случае результат:

Шахматы online Обучение - YouTube

В другом:

YouTube

Как пофиксить эту проблему без использования костылей?


Ответы (1 шт):

Автор решения: nomnoms12

Можно воспользоваться YouTube Data API.

Пример:

import requests


API_KEY = '...'
CHANNEL_ID = 'UCapfEzadQamVtUXGp1oDSwQ'


params = {
    'key': API_KEY,
    'id': CHANNEL_ID,
    'part': 'snippet',
}
d = requests.get('https://www.googleapis.com/youtube/v3/channels', params=params).json()

title = d['items'][0]['snippet']['title']
print(title)

stdout:

Шахматы online Обучение
→ Ссылка