2010-04-04 23 views
1

哪些模块最适合编写一个python程序,该程序可以搜索数百个html文档并删除给定的特定html字符串。 例如,如果我有一个具有<a href="test.html">Test</a>的html文档,并且我想将它从每个包含它的html页面中删除。使用Python搜索特定的HTML字符串

任何帮助都非常感谢,我不需要有人为我编写程序,只是一个有益的方面正确的方向。

+1

我想'sed'或其他已经实现的东西会更简单。 – Amber 2010-04-04 21:06:52

回答

0

htmllib

该模块定义了一类可以作为基础,用于解析在超文本标记语言(HTML)格式的文本 文件。该类不是直接涉及I/O的类 - 它必须通过方法提供 字符串形式的输入,并调用对象的“格式化程序” 的方法以产生输出。 HTMLParser类旨在将 用作其他类的基类,以便添加 功能,并允许扩展其大多数方法或覆盖 。反过来,这个类派生自并扩展了模块sgmllib中定义的SGMLParser类。该HTMLParser的 实现支持HTML 2.0的语言,如RFC 1866

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">Tes&#116;</a> 

等等:“相同”的HTML可以用许多不同的方式表达。如果你知道HTML中使用的精确字符,那么简单的字符串替换就可以了。如果您需要在HTML语义级别进行匹配,那么您需要使用更高级的工具,比如BeautifulSoup,但是,即使在不受删除影响的部分,您也可能具有可能非常不同的HTML输出,因为整个文件将被解析并重新构建。

要在许多文件上执行代码,您会发现os.path.walk可用于在树中查找文件,或glob.glob用于将文件名匹配到类似shell的通配符模式。

+0

解决了字符串替换问题,但是如何为数百个html页面运行相同的脚本? – Gabe 2010-04-04 21:17:09

+0

将os.path.walk和glob.glob添加到答案中... – 2010-04-04 21:19:16