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:
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:
Publicación traducida automáticamente
Artículo escrito por maheswaripiyush9 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA