哪些模块最适合编写一个python程序,该程序搜索数百个html文档并删除给定的某个字符串html。
例如,如果我有一个包含<a href="test.html">Test</a>
的html文档,并且我想从每个包含它的html页面中删除它。
非常感谢任何帮助,我不需要有人为我编写程序,只是朝着正确的方向发挥作用。
答案 0 :(得分:5)
如果您要搜索的字符串将按字面意思在HTML中,那么简单的字符串替换就可以了:
old_html = open(html_file).read()
new_html = old_html.replace(my_string, "")
if new_html != old_html:
open(html_file, "w").write(new_html)
作为字符串中不在字面上的字符串的示例,假设您正在寻找“测试”,如您所说。您希望它与HTML的这些片段相匹配吗?:
<a href='test.html'>Test</a>
<A HREF='test.html'>Test</A>
<a href="test.html" class="external">Test</a>
<a href="test.html">Test</a>
等:“相同”的HTML可以用许多不同的方式表达。如果您知道HTML中使用的精确字符,那么简单的字符串替换就可以了。如果你需要在HTML语义级别进行匹配,那么你需要使用更高级的工具,比如BeautifulSoup,但是你也可能有非常不同的HTML输出,即使在不受删除影响的部分也是如此,因为整个文件将被解析和重构。
要在许多文件上执行代码,您会发现os.path.walk
对于查找树中的文件很有用,或者glob.glob
可以将文件名匹配为类似shell的通配符模式。
答案 1 :(得分:1)
答案 2 :(得分:0)
该模块定义了一个类,它可以作为解析文本的基础 以超文本标记语言(HTML)格式化的文件。这堂课是 与I / O没有直接关系 - 必须提供输入 字符串形式通过方法,并调用“格式化程序”的方法 对象以产生输出。 HTMLParser类旨在实现 用作其他类的基类以便添加 功能,并允许其大多数方法扩展或 覆盖。反过来,这个类派生自并扩展了 SGMLParser类在模块sgmllib中定义。 HTMLParser 实现支持RFC中描述的HTML 2.0语言 1866。