Selector CSS de BeautifulSoup: selección del enésimo hijo

En este artículo, veremos cómo se puede emplear beautifulsoup para seleccionar al niño enésimo. Para ello se utilizan los métodos select() del módulo. El método select() usa el paquete SoupSieve para usar el selector CSS contra el documento analizado.

Sintaxis: seleccionar («css_selector»)

SELECTOR DE CSS:

  • nth-of-type(n): selecciona el enésimo párrafo hijo del padre.
  • nth-child(n): Selecciona el párrafo que es el enésimo hijo del padre

Acercarse:

  1. Módulo de importación
  2. Extraer datos de una página web.
  3. Analizar la string raspada a HTML.
  4. Use la función find() para obtener la etiqueta con el nombre de clase dado o id o tag_name.
  5. Use select («css_selector») para encontrar el enésimo hijo
  6. Imprimir el niño.

Ejemplo 1:

Python3

# importing module
from bs4 import BeautifulSoup
  
markup = """
<html>
    <head>
        <title>GEEKS FOR GEEKS EXAMPLE</title>
    </head>
    <body>
        <p class="1"><b>Geeks for Geeks</b></p>
  
        <p class="coding">A Computer Science portal for geeks.
            <h1>Heading</h1>
            <b class="gfg">Programming Articles</b>,
            <b class="gfg">Programming Languages</b>,
            <b class="gfg">Quizzes</b>;
        </p>
  
        <p class="coding">practice</p>
  
    </body>
</html>
    """
  
# parsering string to HTML
soup = BeautifulSoup(markup, 'html.parser')
  
parent = soup.find(class_="coding")
  
# assign n
n = 2
  
# print the 2nd <b> of parent
print(parent.select("b:nth-of-type("+str(n)+")"))
print()
  
# print the <b> which is the 2nd child of the parent
print(parent.select("b:nth-child("+str(n)+")"))

Producción:

Explicación:

  • select(“p:nth-of-type(n)”) significa seleccionar el enésimo párrafo hijo del padre.
  • select(“p:nth-child(n)”) significa seleccionar el párrafo que es el enésimo hijo del padre.
  • Ambas funciones devolverán [] si un padre no tiene nth-child.

Ejemplo 2:

Python3

# importing module
from bs4 import BeautifulSoup
import requests
  
# assign website
sample_website='https://www.geeksforgeeks.org/python-programming-language/'
page=requests.get(sample_website)
  
# parsering string to HTML
soup = BeautifulSoup(page.content, 'html.parser')
parent = soup.find(class_="wrapper")
  
# assign n
n = 1
  
# print the 2nd <b> of parent
print(parent.select("b:nth-of-type("+str(n)+")"))
print()
  
# print the <b> which is the 2nd child of the parent
print(parent.select("b:nth-child("+str(n)+")"))

Producción:

Publicación traducida automáticamente

Artículo escrito por maheswaripiyush9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *