Python条形图像标签文件

时间:2015-04-02 15:12:14

标签: python input beautifulsoup output edit

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

这是我的尝试:

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)

我正在努力解决两件事,首先代码运行没有错误,但最后一行,print,什么都不打印,前面的行打印一个内存地址。我已经尝试搜索我的问题/阅读文档以了解我在这里做错了什么,但我正在努力。

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

1 个答案:

答案 0 :(得分:1)

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

对于inplace save,我总是在临时位置创建该文件的副本,并在覆盖当前文件之前打开临时文件进行读取。这是因为文件可能存储在内存中很大,我处理大的ascii文件,如果一次性加载所有内容,可能会崩溃。