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.

Problema con Beautifulsoup al obtener el abuelo y los hijos li

Este es mi HTML:

”’
html = “””

“””
”’

Dado que “country_selection” es el único elemento único que puedo seleccionar, ahora estoy intentando obtener los LIs con las ciudades (Frankfurt y München).

Este es mi código:

”’
soup = BeautifulSoup(html)
categories = soup.find(“span”, class_=”country_selection”)

if categories.parent.parent.find(“ul”):
e = categories.parent.parent.select(‘ul’)
for subItem in e:
print(subItem)
”’

Pero esto me da este resultado:

”’

”’

Entonces, esto significa que tengo el UL padre y no puedo iterar a través de los LIs. ¡Y no sé por qué! ¿Dónde está el error? ¿Cómo necesito cambiar mi código para iterar a través de esos LIs?

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema con el código actual es que select('ul') devuelve una lista de todos los elementos ul que son descendientes del elemento padre categories. En este caso, solo hay un ul (el que contiene los elementos li de la ciudad), por lo que e contiene solo ese ul.

    Para iterar a través de los elementos li, puedes llamar a find_all('li') en el elemento ul:

    soup = BeautifulSoup(html)
    categories = soup.find("span", class_="country_selection")
    
    if categories.parent.parent.find("ul"):
      ul = categories.parent.parent.find("ul")
      for li in ul.find_all('li'):
        print(li.text)
    

    Esto imprimirá el contenido de texto de cada elemento li dentro del elemento ul. En este caso, imprimirá:

    Frankfurt
    München
    

Comments are closed.