Cómo raspar datos de Youtube usando Python
Publicado: 2019-05-29YouTube se ha convertido en el claro ganador cuando se trata de sitios web para compartir videos, y aunque se dice que está valorado en más de $ 160 mil millones, la cantidad de personas que se ganan la vida a través del sitio web también es enorme. Estos creadores de contenido se unen al programa de asociación de YouTube y al monetizar su contenido ganan mucho dinero a través de anuncios.
¿Por qué raspar datos de Youtube?
Los datos de YouTube pueden ser útiles para una amplia gama de casos de uso, como:
1. Encuentra las palabras clave que más te gustan
Supongamos que ejecuta una búsqueda para encontrar los mejores videos que se muestran en YouTube para algunas palabras en particular. Ahora, si raspa los Me gusta, No me gusta, las vistas y los títulos de cada uno de esos videos, podrá hacer una lista de palabras clave que, cuando se insertan en sus títulos de YouTube, pueden generar mejores ingresos.
2. Compara etiquetas
Al comparar los Me gusta y las vistas en videos con hashtags particulares, puede tener una mejor idea de qué hashtags usar en su video para hacerlo más popular, o para comprender qué hashtags van mejor con el título de su video.
3. Encuentra los canales más populares
La extracción de los mejores videos en YouTube puede ayudarlo a crear un gráfico de frecuencia de los nombres de los canales que ocurren, lo que le permite encontrar los mejores canales que la gente disfruta. Esto, a su vez, también lo ayudaría a comprender qué temas son los más populares entre los espectadores de YouTube.
4. Hacer un seguimiento de la popularidad de los canales
Al extraer los datos de los videos subidos recientemente de un canal específico de YouTube, podrá averiguar si la popularidad de un canal está aumentando o disminuyendo, o si está estancada.
5. Grabar me gusta, no me gusta y vistas en videos
Puede crear un gráfico con el tiempo en el eje X y los Me gusta, No me gusta o vistas en el eje Y, extrayendo datos de esos videos en intervalos de tiempo regulares.
Comencemos con el código:
Dado que ya habíamos explicado el proceso de instalación e inicialización en artículos anteriores de "Cómo extraer datos de" como este , esperamos que esté listo con estos pasos realizados.
Para ejecutar el código, use el comando python y luego ingrese una URL de video de YouTube cuando se le solicite.

Copie el código que se proporciona a continuación en un archivo y asígnele el nombre youtubeDataExtractor.py (aunque en realidad podría darle cualquier nombre de archivo, siempre que termine en '.py').
[lenguaje de código = "python"]
#!/usr/bin/python
# -*- codificación: utf-8 -*-
importar urllib.request
importar urllib.parse
importar urllib.error
de bs4 importar BeautifulSoup
importar ssl
importar json
importar ast
importar json
importar sistema operativo
de urllib.request Solicitud de importación, urlopen
# Para ignorar los errores del certificado SSL
ctx = ssl.create_default_context()
ctx.check_hostname=Falso
ctx.verify_mode = ssl.CERT_NONE
# Entrada del usuario
url = input('Ingrese la URL del video de Youtube-')
# Hacer que el sitio web crea que está accediendo a él usando un navegador mozilla
req = Solicitud (url, encabezados = {'Agente de usuario': 'Mozilla/5.0'})
página web = urlopen(req).read()
# Creación de un objeto BeautifulSoup de la página html para una fácil extracción de datos.
sopa = BeautifulSoup(página web, 'html.parser')
html = sopa.prettify('utf-8')
video_detalles = {}
otros_detalles = {}
para intervalo en sopa.findAll('span',attrs={'class': 'watch-title'}):
video_detalles['TÍTULO'] = span.text.strip()
para script en sopa.findAll('script',attrs={'type': 'application/ld+json'}):
descripción del canal = json.loads(script.text.strip())
video_detalles['CHANNEL_NAME'] = channelDesctiption['itemListElement'][0]['item']['name']
para div en sopa.findAll('div',attrs={'clase': 'watch-view-count'}):
video_detalles['NUMBER_OF_VIEWS'] = div.text.strip()
for button en sopa.findAll('button',attrs={'title': 'Me gusta esto'}):
video_detalles['ME GUSTA'] = button.text.strip()
for button en sopa.findAll('button',attrs={'title': 'No me gusta esto'}):
video_detalles['NO ME GUSTA'] = botón.texto.strip()
para intervalo en sopa.findAll('span',attrs={'clase': 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count'}):
video_detalles['NUMBER_OF_SUBSCRIPTIONS'] = span.text.strip()
hashtags = []
para intervalo en sopa.findAll('span',attrs={'class': 'standalone-collection-badge-renderer-text'}):
para a en span.findAll('a',attrs={'class': 'yt-uix-sessionlink'}):
hashtags.append(a.text.strip())
video_detalles['HASH_TAGS'] = hashtags

con open('output_file.html', 'wb') como archivo:
archivo.escribir(html)
con open('data.json', 'w', encoding='utf8′) como archivo de salida:
json.dump(video_detalles, archivo de salida, asegurar_ascii=Falso, sangría=4)
print ('———-La extracción de datos está completa. Verifique el archivo json.———-')
[/código]
Una vez que ejecute el código, encontrará un JSON creado en su directorio actual, con el nombre data.json. Ejecutamos el código de algunos videos musicales populares y aquí están los JSON asociados con ellos:
1. Trueno de Imagine Dragons –
[lenguaje de código = "python"]
{
“TÍTULO”: “Imagina Dragones – Trueno”,
“CHANNEL_NAME”: “Imagine DragonsVEVO”,
“NUMBER_OF_VIEWS”: “1,182,556,781 vistas”,
“ME GUSTA”: “6,693,559”,
“NO ME GUSTA”: “337,823”,
“NÚMERO_DE_SUSCRIPCIONES”: “17M”,
"ETIQUETAS": []
}
[/código]
2. En tus sentimientos de Drake
[lenguaje de código = "python"]
{
“TÍTULO”: “Drake – In My Feelings (Letra, Audio) “Kiki ¿Me amas?”,
“CHANNEL_NAME”: “Unidad especial”,
“NUMBER_OF_VIEWS”: “278,121,686 vistas”,
“ME GUSTA”: “2,407,688”,
“NO ME GUSTA”: “114,933”,
“NÚMERO_DE_SUSCRIPCIONES”: “614K”,
"ETIQUETAS": [
“#EnMisSentimientos”,
"#Pato",
"#Escorpión"
]
}
[/código]
El código del rastreador de YouTube explicó:
Como de costumbre, primero extraemos el código HTML de la página web y lo guardamos en un archivo en nuestro directorio local, para que podamos analizarlo y encontrar los puntos de datos que se pueden extraer fácilmente y que también serían valiosos. La mayor parte del estudio de puntos de datos en la página HTML tiene que hacerse manualmente, buscando palabras clave o valores específicos y encontrando dónde ocurren.
Hemos utilizado BeautifulSoup (BS4) para extraer datos de lugares específicos en el código HTML.
- El elemento de tipo de intervalo que tiene la clase 'ver-título' es donde puede encontrar el título del video.
- El elemento de secuencia de comandos que tiene un tipo de 'aplicación/ld+json' contiene el nombre del canal.
- El elemento div con class watch-view-count le ayudaría a obtener la cantidad de vistas de ese video de YouTube en particular.
- El elemento del botón con el título "Me gusta esto" tiene el recuento de la cantidad de Me gusta en ese video en particular.
- De manera similar al punto anterior, el elemento de botón con el título "No me gusta esto", cuenta la cantidad de "No me gusta" en un video en particular.
- El elemento span con la clase 'yt-subscription-button-subscriber-count-branded-horizontal yt-subscriber-count' es uno del que puede extraer la cantidad de suscriptores del canal que ha subido ese video en particular.
- Encontrar los hashtags asociados con un video dado es un poco más complicado que los otros puntos de datos. Primero, debe extraer todos los espacios con la clase 'standalone-collection-badge-renderer-text', y desde allí, debe extraer todas las etiquetas a con la clase 'yt-uix-sessionlink'. Al extraer el texto de todas las etiquetas a, en una matriz, podrá crear una lista de hashtags. Esta matriz se puede agregar al resultado json bajo una clave particular llamada 'HASH_TAGS', para obtener la información en un formato estructurado en el resultado final json.
¿Qué puntos de datos puedes extraer de Youtube?
Con el código proporcionado anteriormente, puede extraer ciertos puntos de datos de cualquier video de YouTube, siempre que posea su URL. Solo el campo de hashtags puede estar ausente en ciertos videos, ya que no es un campo obligatorio en las páginas de videos de YouTube. Los puntos de datos que se pueden raspar son los siguientes:
TÍTULO
El punto de datos más importante es el que estamos extrayendo al principio. El título del video contiene mucha información y es de suma importancia, sin la cual todos los demás puntos de datos no tendrían ningún sentido.
NOMBRE DEL CANAL
Justo después del título, el nombre del canal es importante para asociar el título con el creador, es decir, quién creó el contenido. En YouTube, los videos se asocian por los nombres de sus Canales y no por sus creadores porque en muchos casos, más de una persona trabaja en videos de un solo canal.
NÚMERO DE VISTAS
La métrica más simple para comprender el alcance de un video es encontrar la cantidad de vistas que ha recibido. Esta es también la métrica más importante asociada con un video de YouTube y, en muchos sentidos, determina cuántos ingresos obtendrá el creador del video.
GUSTOS
Los Me gusta en un video de YouTube, es simplemente qué porcentaje de los espectadores les gustó el video lo suficiente como para hacer clic en el botón de aprobación debajo de un video.
NO ME GUSTA
De manera similar al punto de datos anterior, la cantidad de "No me gusta" determinaría la cantidad de clics en el botón "No me gusta" de un video.
NÚMERO DE SUSCRIPCIONES
Si bien los Me gusta, No me gusta y las vistas muestran una imagen de la popularidad de un solo video de YouTube, la cantidad de suscripciones brinda una idea más precisa de cuán popular es el canal de YouTube. Para los canales de YouTube, no tenemos otra métrica. El número de suscripciones es el único punto de datos único y cuanto más alto es, más popular es el canal de YouTube en cuestión.
ETIQUETAS
Los hashtags se han convertido en una forma popular de hacer que su contenido se pueda buscar en diferentes medios. Ya sean publicaciones de Facebook o imágenes de Instagram, la gente usa hashtags con diferentes tipos de contenido en línea hoy en día para poder asociar diferentes tipos de contenido. Esa es la razón por la cual los 'hashtags de tendencia' son una cosa hoy en día.
Conclusión
Si bien el código proporcionado solo puede extraer algunos puntos de datos específicos de una página de video de YouTube, explorar páginas HTML de diferentes páginas de YouTube puede ayudarlo a encontrar más puntos de datos que ocurren bajo elementos HTML similares. El raspado web no tiene reglas estrictas y rápidas dadas, ya que los sitios web siguen cambiando. Por lo tanto, aprender qué datos raspar y cómo raspar es algo que solo se puede recopilar a partir de la experiencia raspando diferentes páginas web que tienen diferentes formatos de datos.
¿Necesita ayuda con la extracción de datos web?
Obtenga datos limpios y listos para usar de sitios web para aplicaciones comerciales a través de nuestros servicios de web scraping.
¡Ups! No pudimos localizar su formulario.
Descargo de responsabilidad: el código proporcionado en este tutorial es solo para fines de aprendizaje. No somos responsables de cómo se usa y no asumimos ninguna responsabilidad por cualquier uso perjudicial del código fuente.
