Prerrequisitos: Beautifulsoup
Las estadísticas de YouTube de un canal de YouTube se pueden usar para el análisis y también se pueden extraer usando el código python. Se pueden recuperar muchos datos como viewCount, subscriberCount y videoCount. Este artículo analiza 2 formas en que se puede hacer.
Método 1: usar la API de YouTube
Primero necesitamos generar una clave API. Necesita una cuenta de Google para acceder a la Consola API de Google, solicitar una clave API y registrar su aplicación. Puede usar la página de API de Google para hacerlo.
Para extraer datos, necesitamos la identificación del canal de YouTube cuyas estadísticas queremos ver. Para obtener la identificación del canal, visite ese canal de YouTube en particular y copie la última parte de la URL (en los ejemplos que se dan a continuación, se usa la identificación del canal GeeksForGeeks).
Acercarse
- Primero crea youtube_statistics.py
- En este archivo, extraiga datos usando la clase YTstats y genere un archivo json con todos los datos extraídos.
- Ahora crea main.py
- En la importación principal youtube_statistics.py
- Agregue la clave API y la identificación del canal
- Ahora, utilizando el primer archivo, los datos correspondientes a la clave proporcionada se recuperarán y guardarán en el archivo json.
Ejemplo :
Código para el archivo main.py:
Python3
from youtube_statistics import YTstats # paste the API key generated by you here API_KEY = "AIzaSyA-0KfpLK04NpQN1XghxhSlzG-WkC3DHLs" # paste the channel id here channel_id = "UC0RhatS1pyxInC00YKjjBqQ" yt = YTstats(API_KEY, channel_id) yt.get_channel_statistics() yt.dump()
Código para el archivo youtube_statistics.py:
Python3
import requests import json class YTstats: def __init__(self, api_key, channel_id): self.api_key = api_key self.channel_id = channel_id self.channel_statistics = None def get_channel_statistics(self): url = f'https://www.googleapis.com/youtube/v3/channels?part=statistics&id={self.channel_id}&key={self.api_key}' json_url = requests.get(url) data = json.loads(json_url.text) try: data = data["items"][0]["statistics"] except: data = None self.channel_statistics = data return data def dump(self): if self.channel_statistics is None: return channel_title = "GeeksForGeeks" channel_title = channel_title.replace(" ", "_").lower() # generate a json file with all the statistics data of the youtube channel file_name = channel_title + '.json' with open(file_name, 'w') as f: json.dump(self.channel_statistics, f, indent=4) print('file dumped')
Producción:
Método 2: Usando BeautifulSoup
Beautiful Soup es una biblioteca de Python para extraer datos de archivos HTML y XML. En este enfoque, usaremos BeautifulSoup y Selenium para extraer datos de los canales de YouTube. Este programa indicará las vistas, el tiempo desde la publicación, el título y las URL de los videos y los imprimirá usando el formato de Python.
Acercarse
- Módulo de importación
- Proporcione la URL del canal cuyos datos se van a buscar
- Extraer datos
- Mostrar los datos obtenidos.
Ejemplo:
Python3
# import required packages from selenium import webdriver from bs4 import BeautifulSoup # provide the url of the channel whose data you want to fetch urls = [ 'https://www.youtube.com/channel/UC0RhatS1pyxInC00YKjjBqQ' ] def main(): driver = webdriver.Chrome() for url in urls: driver.get('{}/videos?view=0&sort=p&flow=grid'.format(url)) content = driver.page_source.encode('utf-8').strip() soup = BeautifulSoup(content, 'lxml') titles = soup.findAll('a', id='video-title') views = soup.findAll( 'span', class_='style-scope ytd-grid-video-renderer') video_urls = soup.findAll('a', id='video-title') print('Channel: {}'.format(url)) i = 0 # views and time j = 0 # urls for title in titles[:10]: print('\n{}\t{}\t{}\thttps://www.youtube.com{}'.format(title.text, views[i].text, views[i+1].text, video_urls[j].get('href'))) i += 2 j += 1 main()
Producción