Python 去除图像标签的文档
Python strip document of image tags
我想编写一个脚本,从 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)
有两件事让我很纠结,首先代码运行时没有错误,但最后一行,即打印,什么也没打印,而前一行打印内存地址。我已经尝试搜索我的 issue/reading 文档以了解我在这里做错了什么,但我很挣扎。
如何使此代码从我的 HTML 文件中删除所有图像标签,将其保存到位的最佳做法是什么?
"orig_f" 是一个文件对象。如果您想打印内容,一种方法是执行 orig_f.read() 或遍历 f 并打印每一行。我认为这就是 strip_tags 函数 return 和 None 的原因。我没有用过 BeautifulSoap,所以不能说它会是什么 return。
对于就地保存,我总是在临时位置复制文件并在覆盖当前文件之前打开临时文件进行读取。这是因为文件可能太大而无法存储在内存中,我处理大型 ascii 文件,如果一次加载所有内容可能会崩溃。
我想编写一个脚本,从 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)
有两件事让我很纠结,首先代码运行时没有错误,但最后一行,即打印,什么也没打印,而前一行打印内存地址。我已经尝试搜索我的 issue/reading 文档以了解我在这里做错了什么,但我很挣扎。
如何使此代码从我的 HTML 文件中删除所有图像标签,将其保存到位的最佳做法是什么?
"orig_f" 是一个文件对象。如果您想打印内容,一种方法是执行 orig_f.read() 或遍历 f 并打印每一行。我认为这就是 strip_tags 函数 return 和 None 的原因。我没有用过 BeautifulSoap,所以不能说它会是什么 return。
对于就地保存,我总是在临时位置复制文件并在覆盖当前文件之前打开临时文件进行读取。这是因为文件可能太大而无法存储在内存中,我处理大型 ascii 文件,如果一次加载所有内容可能会崩溃。