Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
458 views
in Technique[技术] by (71.8m points)

python - Using BeautifulSoup to modify HTML

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,'##')
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Two things:

  1. You need to add some code to write the output from BeautifulSoup back to a file.
  2. You should use 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"))  

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...