Hacer scraping de datos de vídeos de TikTok
El TikTok Videos Scraper toma una URL de vídeo y devuelve una fila de doce columnas: query, video_id, author, description, create_time, likes, comments, shares, plays, saves, reposts y url. Detrás de esta página hay seis ejecuciones, y muestran dos cosas con claridad. La primera es que el esquema creció: las ejecuciones hasta el 3 de julio devolvieron diez columnas y las de a partir del 14 de julio devolvieron doce, añadiendo saves y reposts. No se quitó ni se renombró nada, así que un importador escrito contra la forma antigua sigue cargando: simplemente le faltan dos columnas, lo que es un buen argumento para fijar los campos que necesitas en vez de leer por posición.
Lo segundo es una laguna en nuestras propias pruebas, y preferimos etiquetarla a esconderla. Ninguna de las seis ejecuciones envió una URL de vídeo de TikTok real. Las entradas fueron la portada de TikTok, una página de perfil, una ruta incompleta y tres ids de vídeo que eran o bien claramente de marcador o bien realmente inexistentes. Todas las columnas de datos están por tanto vacías, y eso es un hecho sobre lo que pedimos y no un hallazgo sobre el servicio. En esta página no hay cifras de interacción, nombres de autor ni filas de ejemplo en ningún sitio, porque producir alguna significaría inventarla.
Merece la pena separar esto de nuestros otros servicios de TikTok. Los scrapers de hashtags y de búsqueda sí están obstruidos: ambos devuelven una columna de estado que explica que TikTok sirve esas listas a través de una API con firma de petición en vez de en el HTML de la página. Aquí no apareció nada de eso. En su lugar, el servicio respondió distinto según a qué apuntara: no data para una portada o un perfil, y item doesn't exist (removed / private) para un id de vídeo bien formado sin vídeo detrás. Distinguir dos modos de fallo es lo que hace un analizador que funciona, así que la lectura razonable es un servicio operativo con entradas malas, no un muro.
Una observación más para quien vaya a construir sobre esto: la columna url fue idéntica byte a byte a query en todas las ejecuciones. Devuelve tu entrada en vez de resolver una dirección canónica, así que no normalizará enlaces cortos ni seguirá redirecciones por ti. Y description, que debería llevar el texto del vídeo, llevaba una cadena de estado en las seis ejecuciones: léela antes de tratar una fila en blanco como un fallo silencioso, porque es lo que te dice si el vídeo ya no está o si la URL estaba mal. Solo páginas de acceso público, sin rastreadores de terceros en la capa de datos, y las exportaciones se eliminan automáticamente a los 30 días. Tus primeras 500 filas son gratis y no necesitan tarjeta, la forma más barata de responder la pregunta que esta página, honestamente, no puede.