哪些模块最适合编写一个python程序,该程序可以搜索数百个html文档并删除给定的特定html字符串。 例如,如果我有一个具有<a href="test.html">Test</a>
的html文档,并且我想将它从每个包含它的html页面中删除。使用Python搜索特定的HTML字符串
任何帮助都非常感谢,我不需要有人为我编写程序,只是一个有益的方面正确的方向。
哪些模块最适合编写一个python程序,该程序可以搜索数百个html文档并删除给定的特定html字符串。 例如,如果我有一个具有<a href="test.html">Test</a>
的html文档,并且我想将它从每个包含它的html页面中删除。使用Python搜索特定的HTML字符串
任何帮助都非常感谢,我不需要有人为我编写程序,只是一个有益的方面正确的方向。
该模块定义了一类可以作为基础,用于解析在超文本标记语言(HTML)格式的文本 文件。该类不是直接涉及I/O的类 - 它必须通过方法提供 字符串形式的输入,并调用对象的“格式化程序” 的方法以产生输出。 HTMLParser类旨在将 用作其他类的基类,以便添加 功能,并允许扩展其大多数方法或覆盖 。反过来,这个类派生自并扩展了模块sgmllib中定义的SGMLParser类。该HTMLParser的 实现支持HTML 2.0的语言,如RFC 1866
描述如果您正在搜索的字符串将在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的通配符模式。
解决了字符串替换问题,但是如何为数百个html页面运行相同的脚本? – Gabe 2010-04-04 21:17:09
将os.path.walk和glob.glob添加到答案中... – 2010-04-04 21:19:16
我想'sed'或其他已经实现的东西会更简单。 – Amber 2010-04-04 21:06:52