Estoy usando BeautifulSoup y analizando algunos HTML.
Obtengo ciertos datos de cada HTML (usando el bucle for) y agrego esos datos a una lista determinada.
El problema es que algunos de los HTML tienen un formato diferente (y no tienen los datos que quiero en ellos) .
Entonces, estaba tratando de usar el manejo de excepciones y agregar valor null
a la lista (debería hacer esto ya que la secuencia de datos es importante).
Por ejemplo, tengo un código como:
soup = BeautifulSoup(links)
dlist = soup.findAll('dd', 'title')
# I'm trying to find content between <dd class='title'> and </dd>
gotdata = dlist[1]
# and what i want is the 2nd content of those
newlist.append(gotdata)
# and I add that to a newlist
y algunos de los enlaces no tienen ninguno <dd class='title'>
, así que lo que quiero hacer es agregar una cadena null
a la lista.
Aparece el error:
list index out of range.
Lo que he intentado es agregar algunas líneas como esta:
if not dlist[1]:
newlist.append('null')
continue
Pero no funciona. Todavía muestra error:
list index out of range.
¿Qué debo hacer al respecto? ¿Debería utilizar el manejo de excepciones? ¿O hay alguna forma más fácil?
¿Alguna sugerencia? ¡Cualquier ayuda sería genial!
fuente
None
está claramente más limpio, el OP quiere'null'
en este caso.Tienes dos opciones; manejar la excepción o probar la longitud:
o
Utilice el primero si a menudo no hay un segundo elemento, el segundo si a veces no hay un segundo elemento.
fuente
Un ternario será suficiente. cambio:
a
esta es una forma más corta de expresar
fuente
Tomando referencia a ThiefMaster ♦ a veces obtenemos un error con un valor dado como '\ n' o nulo y realizamos el requerido para manejar ValueError:
Manejar la excepción es el camino a seguir
fuente
fuente
Para cualquiera interesado en una forma más corta:
Pero para un mejor rendimiento, sugiero usar en
False
lugar de'null'
, entonces una prueba de una línea será suficiente:fuente