2015-04-02 79 views
0

我想写一个脚本,它将从Python中的简单html文件中删除所有图像,并将文件保存到位。Python条形文件的图像标签

这里是我的尝试:

from bs4 import BeautifulSoup, NavigableString 

def strip_tags(html, invalid_tags): 
    soup = BeautifulSoup(html) 

    for tag in soup.findAll(True): 
     if tag.name in invalid_tags: 
      s = "" 

      for c in tag.contents: 
       if not isinstance(c, NavigableString): 
        c = strip_tags(unicode(c), invalid_tags) 
       s += unicode(c) 

      tag.replaceWith(s) 

    return soup 

data ="C:\\Users\\ADMIN\\Documents\\webpage 1.htm" 
with open(data) as orig_f: 
     html = BeautifulSoup(orig_f.read()) 
     invalid_tags = ['img'] 
     print orig_f 
     print strip_tags(orig_f, invalid_tags) 

有两件事情,我挣扎,首先所有的代码运行没有错误,但最后一行,打印,打印什么,前行打印一个内存地址。我试过寻找我的问题/阅读文件,以了解我在这里做错了什么,但我正在挣扎。

如何让此代码从我的HTML文件中删除所有图像标记,以及将其保存到位的最佳做法是什么?

回答

1

“orig_f”是一个文件对象。如果你想打印内容的一种方法是做orig_f.read()或循环f并打印每一行。我认为这就是为什么strip_tags函数返回None。我没有使用BeautifulSoap,所以不能说它会返回什么。

对于就地保存,我总是在临时位置复制文件并在覆盖当前文件之前打开用于读取的临时文件。这是因为文件可能会被巨大的存储在内存中,我处理的大型ascii文件可能会崩溃,如果所有的内容一次加载。