¿Cómo guardar los cambios realizados en un archivo HTML usando BeautifulSoup en Python?

Tengo la siguiente secuencia de comandos, que modifica los atributos href en un archivo HTML (en el futuro, será una lista de archivos HTML en un directorio). Usando BeautifulSoup logré acceder a los valores de las tags y modificarlos como deseo, pero no sé cómo guardar los cambios realizados en el archivo.

 import os import re from bs4 import BeautifulSoup htmlDoc = open('adding_computer_c.html',"r+") soup = BeautifulSoup(htmlDoc) replacements= [ ('_', '-'), ('../tasks/', prefixUrl), ('../concepts/', prefixUrl) ] for link in soup.findAll('a', attrs={'href': re.compile("../")}): newlink=str(link) for k, v in replacements: newlink = newlink.replace(k, v) extrachars=newlink[newlink.find("."):newlink.find(">")] newlink=newlink.replace(extrachars,'') link=newlink print(link) ##How do I save the link I have modified back to the HTML file? print(soup)##prints the original html tree htmlDoc.close() 

 newlink = link['href'] # .. make replacements link['href'] = newlink # store it back 

Ahora print(soup.prettify()) mostrará los enlaces modificados. Para guardar los cambios en un archivo:

 htmlDoc.close() html = soup.prettify("utf-8") with open("output.html", "wb") as file: file.write(html) 

Para conservar la encoding de caracteres original del documento, puede usar soup.original_encoding lugar de “utf-8”. Ver codificaciones .