es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Python: urllib.request.urlopen no está funcionando correctamente.

No sé por qué este código no funciona.
Cuando imprimo la lista “videos” y “resultados de búsqueda” para ver qué está sucediendo, ambos están vacíos. Por eso la declaración “if” nunca se alcanza, como se puede ver en la captura de pantalla.

# Consultar resultados de YouTube según las canciones ingresadas en el archivo de texto
def find_video_urls(self, songs):
       videos = list()
       for song in songs:
            self.update_text_widget("\nCanción - " + song + " - Consultando resultados de YouTube ...")

            query_string = urllib.parse.urlencode({"search_query": song})
            with urllib.request.urlopen("http://www.youtube.com/results?" + query_string) as html_content:

                # Obtener todos los videos que cumplieron con el criterio del nombre de la canción
                search_results = re.findall(r'href=\"\/watch\?v=(.{11})\'', html_content.read().decode())

                # Tomar solo el resultado principal
                if len(search_results) != 0:
                    videos.append("https://www.youtube.com/watch?v=" + search_results[0])
                    self.update_text_widget("\nCanción - " + song + " - ¡Se encontró el resultado principal!")

return videos

Salida de GUI

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El código no funciona porque tanto las variables “videos” como “search_results” están vacías. La variable “search_results” se llena utilizando expresiones regulares para extraer IDs de video del HTML obtenido de una consulta a YouTube. Es posible que la expresión regular no esté coincidiendo correctamente con los IDs de video en el HTML, lo que resulta en una variable “search_results” vacía. Además, si todas las consultas no devuelven resultados, entonces la lista “videos” permanecerá vacía ya que no se agregarán URL a ella. Una forma de depurar este código sería imprimir la variable “query_string” para asegurarse de que las consultas generadas sean correctas, y imprimir la variable “html_content” para asegurarse de que se está obteniendo el HTML correcto. Además, puede ser útil probar la expresión regular utilizada para extraer los IDs de video con HTML de muestra para asegurarse de que esté funcionando como se espera.

Comments are closed.