BeautifulSoup – Modificando el árbol

Prerrequisitos: BeautifulSoup

Beautifulsoup es una biblioteca de Python utilizada para el web scraping. Esta poderosa herramienta de python también se puede usar para modificar páginas web html. Este artículo describe cómo se puede emplear beautifulsoup para modificar el árbol de análisis. BeautifulSoup se utiliza para buscar en el árbol de análisis y permitirle modificar el árbol. Puede cambiar el nombre de la etiqueta, cambiar los valores de sus atributos, agregar y eliminar atributos.

Modificar el nombre de la etiqueta y sus atributos

Puede cambiar el nombre de la etiqueta y modificar su atributo agregándolos o eliminándolos.

  • Para cambiar el nombre de la etiqueta:

Sintaxis: etiqueta.nombre = “nueva_etiqueta”

  • Para modificar su atributo o agregar un nuevo atributo:

Sintaxis: etiqueta[“atributo”] = “valor”

  • Para eliminar cualquier atributo:

Sintaxis: del tag[“atributo”]

Un árbol también se puede modificar insertando nuevos elementos en los lugares requeridos.

  • La función insert() insertará un nuevo elemento en cualquier posición

Sintaxis: etiqueta.insertar()

  • La función insert_after() insertará un elemento después de algo en el árbol de análisis.

Sintaxis: etiqueta.insertar_después()

  • La función insert_before() insertará un elemento antes de algo en el árbol de análisis.

Sintaxis: etiqueta.insertar_antes()

Acercarse :

  • Módulo de importación
  • Eliminar datos de la página web
  • Analizar la string raspada a html
  • Seleccione la etiqueta dentro de la cual se debe realizar la modificación
  • Realice los cambios necesarios

Ejemplo 1: 

Python3

# importing module
from bs4 import BeautifulSoup
 
markup = """<p class="para">gfg</p>
 
 
 
 
"""
 
# parsering string to HTML
soup = BeautifulSoup(markup, 'html.parser')
 
# extracting a tag
tag = soup.p
 
print("Before modifying the tag name: ")
print(tag)
print()
 
# modifying tag name
tag.name = "div"
 
print("After modifying the tag name: ")
print(tag)
print()
# modifying its class attribute
tag['class'] = "div_class"
 
# adding new attribute
tag['id'] = "div_id"
 
print("After modifying and adding attributes: ")
print(tag)
print()
 
# to delete any attributes
del tag["class"]
 
print("After deleting class attribute: ")
print(tag)
print()
 
# modifying the tags content
tag.string = "Geeks"
 
print("After modifying tag string: ")
print(tag)
print()
 
# using insert function.
tag = soup.div
print("Before inserting: ")
print(tag)
print()
 
# inserting content
tag.insert(1, " for Geeks")
print("After inserting: ")
print(tag)
print()

Producción:

Ejemplo 2:

Python3

# importing module
from bs4 import BeautifulSoup
 
soup = BeautifulSoup("<b>| A Computer Science portal</b>", 'html.parser')
 
tag = soup.new_tag("p")
tag.string = "Geeks"
 
 
# insert before
soup.b.string.insert_before(tag)
print(soup.b)
print()
 
# insert after
soup.b.p.insert_after(soup.new_string(" for Geeks"))
print(soup.b)

Producción:

modify tree python bs4

Agregar nueva etiqueta y elemento  de envoltura

El árbol se puede modificar agregando una nueva etiqueta en cualquier ubicación requerida. También podemos envolver el elemento para modificarlo.

  • La función new_tag() agregará una nueva etiqueta

Sintaxis: new_tag(“atributo”)

  • La función wrap() encerrará un elemento en la etiqueta que especifique y devolverá un nuevo envoltorio

Sintaxis: envolver()

  • la función unwrap() desenvuelve los elementos envueltos.

Sintaxis: desenvolver()

Ejemplo:

Python3

# importing module
from bs4 import BeautifulSoup
 
markup = '
 
 
 
 
<p>Geeks for Geeks</p>
 
 
 
 
'
 
# parsering string to HTML
soup = BeautifulSoup(markup, 'html.parser')
print(soup)
 
# wrapping around the string
soup.p.string.wrap(soup.new_tag("i"))
print(soup)
 
# wrapping around the tag
soup.p.wrap(soup.new_tag("div"))
print(soup)
 
# unwrapping the i tag
 
soup.p.i.unwrap()
 
print(soup)
 
old_tag = soup.div
 
# new tag
new_tag = soup.new_tag('div')
new_tag.string = "| A Computer Science portal for geeks"
 
# adding new tag
old_tag.append(new_tag)
 
print(soup)

Producción:

Elemento de reemplazo

La función replace_with() reemplazará la etiqueta o string anterior con una nueva etiqueta o string en el árbol de análisis.

Sintaxis: replace_with()

Ejemplo:

Python3

# importing BeautifulSoup Module
from bs4 import BeautifulSoup
 
markup = '<a href="http://gfg.com/">Geeks for Geeks <i>gfg.com</i></a>'
 
# parsering string to HTML
soup = BeautifulSoup(markup, 'html.parser')
 
# tag to be replaced
old_tag = soup.a
 
# new tag
new_tag = soup.new_tag("p")
 
# input string
new_tag.string = "gfg.in"
 
'''replacing tag  page_element.replace_with("string")
removes a tag or string from the tree, and replaces
it with the tag or string of your choice.'''
 
old_tag.i.replace_with(new_tag)
 
print(old_tag)

Producción:

<a href=”http://gfg.com/”>Geeks para Geeks <p>gfg.in</p></a>

Agregar nuevo contenido a una etiqueta existente

Para agregar nuevos contenidos a una etiqueta existente, se puede hacer mediante la función append() o el constructor NavigableString().

Sintaxis: tag.append(“contenido”)

Ejemplo:

Python3

# importing module
from bs4 import BeautifulSoup
from bs4 import NavigableString
 
markup = """<a href="https://www.geeksforgeeks.org/">Geeks for Geeks</a>"""
 
# parsering string to HTML
soup = BeautifulSoup(markup, 'html.parser')
 
# extracting a tag
tag = soup.a
 
# appending content
tag.append("| A Computer Science portal")
print(tag)
 
# appending content using navigableString constructor
new_str = NavigableString(" for geeks")
tag.append(new_str)
print(tag)

Producción:

<a href=”https://www.geeksforgeeks.org/”>Geeks para Geeks| Un portal de Informática</a>

<a href=”https://www.geeksforgeeks.org/”>Geeks para Geeks| Un portal de informática para geeks</a>

Eliminar contenido y elemento

Un árbol se puede modificar eliminando contenido o también eliminando elementos.

  • clear() elimina el contenido de la etiqueta.

Sintaxis: clear()

  • extract() elimina una etiqueta o strings del árbol.

Sintaxis: extraer()

  • decompose() elimina la etiqueta y elimina todo el contenido.

Sintaxis: descomponer()

Ejemplo:

Python3

# importing module
from bs4 import BeautifulSoup
 
markup = '<a href="https://www.geeksforgeeks.org/">Geeks for Geeks <i>| A Computer Science portal</i></a>'
 
# parsering string to HTML
soup = BeautifulSoup(markup, 'html.parser')
 
tag = soup.a
print(tag)
print()
 
# clearing its all content
tag.clear()
print(tag)
print()
 
# extracting i tag
# parsering string to HTML
soup2 = BeautifulSoup(markup, 'html.parser')
 
a_tag = soup2.a
 
print(a_tag)
print()
i_tag = soup2.i.extract()
 
print(a_tag)
print()
 
# decomposing i tag
# parsering string to HTML
soup2 = BeautifulSoup(markup, 'html.parser')
 
a_tag = soup2.a
 
print(a_tag)
print()
i_tag = soup2.i.decompose()
 
print(a_tag)

Producción:

Removing content python bs4

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 *