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.

Pregunta sobre Webscraping en cuanto a combinar varios valores en una sola fila con BeautifulSoup.

Digamos que quiero hacer scraping en IMDb para obtener las 10 películas más populares. Me gustaría obtener el título de las películas y los miembros del reparto de las mismas.

Puedo fácilmente obtener el título de las películas y agregarlos a una lista. El problema es que no sé cómo agregar varios valores en una misma fila. Digamos que la primera película tiene 3 actores, la segunda película tiene 5 actores, ¿cómo puedo agregar los actores a una lista de tal manera que los 3 actores de la primera película estén en la fila 1 de la lista y los 5 actores de la segunda película estén en la fila 2 y así sucesivamente?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Una forma de resolver este problema es creando una lista de tuplas, en donde cada tupla representa una película y contiene el título de la película y una lista de sus miembros del reparto. Aquí hay un ejemplo de un fragmento de código utilizando Beautiful Soup:

    import requests
    from bs4 import BeautifulSoup
    
    url = 'https://www.imdb.com/chart/top/'
    
    response = requests.get(url)
    soup = BeautifulSoup(response.text, 'html.parser')
    
    movies = []
    for movie in soup.select('tbody.lister-list tr'):
        title = movie.find('td', class_='titleColumn').find('a').string
        cast_list = movie.find('td', class_='titleColumn').find('a')['href'].replace('/title/', '').split('/')[0] + '/fullcredits'
        cast_response = requests.get('https://www.imdb.com/title/' + cast_list)
        cast_html = cast_response.text
        cast_soup = BeautifulSoup(cast_html, 'html.parser')
        casts = [cast.string for cast in cast_soup.find_all('td', class_='primary_photo')]
        movies.append((title, casts))
    
    print(movies)
    

    Este código utiliza la biblioteca requests para recuperar la lista de las diez películas mejor clasificadas en IMDb, y luego utiliza Beautiful Soup para analizar el HTML y extraer los títulos de las películas y las URL de la lista de miembros del reparto. Luego envía otra solicitud para cada URL de la lista de miembros del reparto y utiliza Beautiful Soup nuevamente para extraer los miembros del reparto.

    La lista movies se inicializa vacía en la línea 7, y luego se agregan el título de cada película y sus miembros del reparto a la lista como una tupla en las líneas 13-15. Cada tupla contiene el título de la película como cadena de texto y una lista de miembros del reparto para esa película.

    Esta solución permite la flexibilidad en el número de actores por película y asegura que el título de cada película y sus miembros del reparto se agrupen juntos.

Comments are closed.