I want to use Beautifulsoup to modify a whole div
of a HTML. I was trying to modify the HTML, however the console output has the modifications, but the actual .html document itself is not modified. No new HTML was created.
Can someone help me?
from bs4 import BeautifulSoup,Tag
import re
import urllib2
import os.path
base=os.path.dirname(os.path.abspath(__file__))
html=open(os.path.join(base,'example.html'))
soup=BeautifulSoup(html,'html.parser')
for i in soup.find('div',{"id":None}).findChildren():
l=str(i);
print l
print l.replace(l,'##')
Two things:
replace_with()
to make changes to the HTML. By converting to a string, you were just modifying a textual copy.This can be done as follows:
from bs4 import BeautifulSoup
import os
base = os.path.dirname(os.path.abspath(__file__))
html = open(os.path.join(base, 'example.html'))
soup = BeautifulSoup(html, 'html.parser')
for i in soup.find('div', {"id":None}).findChildren():
i.replace_with('##')
with open("example_modified.html", "wb") as f_output:
f_output.write(soup.prettify("utf-8"))
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With