Accede al siguiente elemento con BeautifulSoup

Soy completamente nuevo en el análisis web con Python / BeautifulSoup. Tengo un HTML que tiene (parte de) el código de la siguiente manera:

 

Tengo que visitar cada enlace (básicamente cada elemento

  • ) hasta que no haya más tags
  • presentes. Cada vez que se hace clic en un enlace, su elemento
  • correspondiente obtiene la clase como ‘activa’. Mi código es:

     from bs4 import BeautifulSoup import urllib2 import re landingPage = urllib2.urlopen('somepage.com').read() soup = BeautifulSoup(landingPage) pageList = soup.find("div", {"id": "pages"}) page = pageList.find("li", {"class": "active"}) 

    Este código me da el primer elemento

  • en la lista. Mi lógica es que estoy comprobando si next_sibling no es None. Si no es Ninguno, estoy creando una solicitud HTTP para el atributo href de la etiqueta en ese hermano
  • . Eso me llevaría a la página siguiente, y así sucesivamente, hasta que no haya más páginas.

    Pero no puedo averiguar cómo obtener la siguiente next_sibling de la page dada anteriormente. ¿Es page.next_sibling.get("href") o algo así? Revisé la documentación, pero de alguna manera no la encontré. ¿Puede alguien ayudar, por favor?

    Use find_next_sibling() y sea explícito sobre qué elemento de hermano quiere encontrar:

     next_li_element = page.find_next_sibling("li") 

    next_li_element se convertiría en None si la page corresponde al último li activo:

     if next_li_element is None: # no more pages to go 
  • ¿Has mirado dir(page) o la documentación? Si es así, ¿cómo se perdió .find_next_sibling() ?

     from bs4 import BeautifulSoup import urllib2 import re landingPage = urllib2.urlopen('somepage.com').read() soup = BeautifulSoup(landingPage) pageList = soup.find("div", {"id": "pages"}) page = pageList.find("li", {"class": "active"}) sibling = page.find_next_sibling()