使用Python搜索特定的HTML字符串

时间:2010-04-04 21:02:57

标签: python html

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

非常感谢任何帮助,我不需要有人为我编写程序,只是朝着正确的方向发挥作用。

3 个答案:

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

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

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

答案 1 :(得分:1)

答案 2 :(得分:0)

htmllib

  

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