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.

Extracción de ids y opciones de select utilizando BeautifulSoup y organizándolos en un dataframe de Pandas.

Tengo el siguiente código html que he extraído:

<select class="class1" ,="" id="id1">
    <option value="0">A1</option>
    <option value="1">A2</option>
    <option value="2">A3</option>
    <option value="3">A4</option>
    <option value="4">A5</option>
    <option value="5">A6</option>
</select>
.
.
.
<select class="class2" ,="" id="id2">
    <option value="0">B1</option>
    <option value="1">B2</option>
    <option value="2">B3</option>
</select>
.
.
<select class="class3" ,="" id="id3">
    <option value="0">C1</option>
    <option value="1">C2</option>
    <option value="2">C3</option>
    <option value="2">C4</option>
</select>

Necesito extraer las opciones y los ids correspondientes de cada select y organizarlos en un marco de datos de Pandas, similar a esto:

| id  | option |
|:--- |:------:|
| id1 |   A1   |
| id1 |   A2   |
| id1 |   A3   |
| id2 |   B1   |
| id2 |   B2   |
| id2 |   B3   |
| id3 |   C1   |
| id3 |   C2   |
| id3 |   C3   |
| id3 |   C4   |
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para extraer las opciones y los ids correspondientes de cada select y organizarlos en un dataframe de Pandas, podemos utilizar bibliotecas de Python como BeautifulSoup y Pandas.

    Aquí está el código para lograrlo:

    from bs4 import BeautifulSoup
    import pandas as pd
    
    # Aquí está el código HTML proporcionado en la pregunta
    html = '''
    <select class="class1" ,="" id="id1">
        <option value="0">A1</option>
        <option value="1">A2</option>
        <option value="2">A3</option>
        <option value="3">A4</option>
        <option value="4">A5</option>
        <option value="5">A6</option>
    </select>
    
    <select class="class2" ,="" id="id2">
        <option value="0">B1</option>
        <option value="1">B2</option>
        <option value="2">B3</option>
    </select>
    
    <select class="class3" ,="" id="id3">
        <option value="0">C1</option>
        <option value="1">C2</option>
        <option value="2">C3</option>
        <option value="2">C4</option>
    </select>
    '''
    
    # Parsear el código HTML utilizando BeautifulSoup
    soup = BeautifulSoup(html, 'html.parser')
    
    # Crear una lista vacía para almacenar los resultados
    results = []
    
    # Encontrar todas las etiquetas select
    select_tags = soup.find_all('select')
    
    # Recorrer cada etiqueta select y extraer las opciones y los ids correspondientes
    for select_tag in select_tags:
        select_id = select_tag['id']
        options = select_tag.find_all('option')
        for option in options:
            option_value = option.text
            results.append({'id': select_id, 'option': option_value})
    
    # Crear un dataframe de Pandas a partir de los resultados
    df = pd.DataFrame(results)
    
    # Imprimir el dataframe
    print(df)
    

    La salida será:

        id option
    0  id1     A1
    1  id1     A2
    2  id1     A3
    3  id1     A4
    4  id1     A5
    5  id1     A6
    6  id2     B1
    7  id2     B2
    8  id2     B3
    9  id3     C1
    10 id3     C2
    11 id3     C3
    12 id3     C4
    

Comments are closed.