Home > Back-end >  How can I change a text in BeautifulSoup and keep the HTML code not effected
How can I change a text in BeautifulSoup and keep the HTML code not effected

Time:11-04

I am trying to extract specific HTML tags and translate the text value in it and replace the text with the translated value. I am using python and bs4. I have been thinking of string replacement but I do not know how to deal with BeautifulSoup as a string. here is the html code I extracted

<p style="text-align: center;">Everyone Active has opened its own online shop that’s packed with fantastic quality fitness equipment that’s perfect for helping you work out at home at incredible prices. Follow the link below to find out more.</p>

I want the final results to be:

<p style="text-align: center;">Everyone Active ha abierto su propia tienda en línea que está repleta de equipos de fitness de calidad fantástica que son perfectos para ayudarte a hacer ejercicio en casa a precios increíbles. Sigue el enlace de abajo para descubrir mas.</p>

CodePudding user response:

Use replace_with()

Here is how you can do it.

from bs4 import BeautifulSoup

s= """
<p style="text-align: center;">Everyone Active has opened its own online shop that’s packed with fantastic quality fitness equipment that’s perfect for helping you work out at home at incredible prices. Follow the link below to find out more.</p>
"""
soup = BeautifulSoup(s, 'lxml')
p_tag = soup.find('p')

#Replacing the Text
p_tag.string.replace_with('Everyone Active ha abierto su propia tienda en línea que está repleta de equipos de fitness de calidad fantástica que son perfectos para ayudarte a hacer ejercicio en casa a precios increíbles. Sigue el enlace de abajo para descubrir mas.')

print(soup)

Output:

<html>
 <body>
  <p style="text-align: center;">
   Everyone Active ha abierto su propia tienda en línea que está repleta de equipos de fitness de calidad fantástica que son perfectos para ayudarte a hacer ejercicio en casa a precios increíbles. Sigue el enlace de abajo para descubrir mas.
  </p>
 </body>
</html>
  • Related