使用BeautifulSoup修改HTML

时间:2016-11-23 23:39:37

标签: python html beautifulsoup

我想使用Beautifulsoup来修改HTML的整个div。我试图修改HTML,但是控制台输出有修改,但实际的.html文档本身没有修改。没有创建新的HTML。

有人可以帮助我吗?

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,'##')

1 个答案:

答案 0 :(得分:2)

两件事:

  1. 您需要添加一些代码才能将BeautifulSoup的输出写回文件。
  2. 您应该使用replace_with()对HTML进行更改。通过转换为字符串,您只需修改文本副本。
  3. 这可以按如下方式完成:

    from bs4 import BeautifulSoup
    import urllib2
    import re
    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"))