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.

Incapacidad para manejar valores vacíos de en la extracción de datos web.

Estoy raspeando una página wiki, pero hay algunos elementos vacíos

en algunas filas, por lo tanto, usé:

for tr in table1.tbody:
    lista = []
    for td in tr:
        try:
            if(td.text is None): lista.append('NA')
            else: lista.append(td.text.strip())

        except:
            lista.append(td.strip())

para almacenar esos elementos de filas en una lista, pero cuando imprimo row_list.

Aquellas row_list con valor

vacío, los cuales deberían tener el valor ‘NA’ añadido, aún están vacíos, es decir, ‘NA’ no se ha añadido en la lista.

¿Cómo puedo solucionar esto?

web page I am scraping

code I have tried

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Podría haber un problema al verificar si el texto del elemento td es None. En su lugar, podría verificar si el elemento td está vacío (no contiene texto) y agregar 'NA' a la lista en ese caso. Así es cómo podrías modificar tu código:

    for tr in table1.tbody:
        row_list = []
        for td in tr:
            if td.text.strip():  # verifica si el elemento td no está vacío
                row_list.append(td.text.strip())
            else:
                row_list.append('NA')
    

    Al utilizar if td.text.strip() en lugar de if(td.text is None), podemos capturar los casos en los que el elemento td está vacío (no contiene texto). Si el elemento td no está vacío, agregamos su texto a row_list. De lo contrario, añadimos 'NA'. Esto garantizará que los elementos td vacíos se manejen correctamente en tu lista.

Comments are closed.