【问题标题】:Looking for an HTML parser to do search/replaces on text nodes寻找一个 HTML 解析器在文本节点上进行搜索/替换
【发布时间】:2013-02-07 12:42:49
【问题描述】:

我需要在大量静态 html 文件中进行大量搜索和替换。我想出的一个问题是,当我真正我想要搜索/替换的只是文本节点时,我在 url 中得到了匹配项。

这使得正则表达式更加困难并且很可能更容易出错,因为您现在正在使用它们解析 html。

仅在文本节点上进行搜索/替换的最简单方法是什么?我说的是你可以在几分钟内启动并运行,而无需在 Python-Java-Ruby-Headless-Phantom-PHP-Node-FluxCapacitor 中获得硕士学位。

请像在和白痴说话一样提供建议。

我使用的是 Windows 7

我正在寻找类似 Notepad++ 中的搜索/替换功能。你给它一个开始搜索的目录,它递归搜索,点击你指定的每种类型的文件(如 .html 或 .shtml)你告诉它要搜索什么以及用什么替换它。它会运行,10 或 15 秒后,您可能已经一口气编辑了数百个文件。你知道,死的简单的东西。

这就是我想要做的,但只是在文本节点内搜索/替换。

【问题讨论】:

    标签: html html-parsing replace textnode


    【解决方案1】:

    SublimeText 2 有一些非常强大的文本搜索功能,应该使您能够按照您的解释进行操作,所以虽然我认为我可以为您指出正确的方向 - 我自己仍在学习如何使用它 - 但是它确实具有“在文件中查找”选项,这意味着您可以在许多不同的文件中获取选定的单词并替换它 - 但我还没有找到一种方法来排除可能不需要更改的不相关的单词。希望其他人会出现并启发您。

    您可能希望在原始帖子中添加标签“Sublime text 2”以扩大受众范围

    【讨论】:

    • 如果您不能排除不相关的匹配项,则没有真正的帮助。 Notepad++ 也有同样的问题,这就是我开始研究正则表达式搜索/替换的原因。另外,我不想为此购买软件。
    【解决方案2】:

    您可以在http://htql.net 使用 Python 和 HTQL。一些例子:

    page="<html> <body> <table> <tr><td id='cell1'> test1 </td></tr> <tr> <td id='cell2'> test2 </td> </tr> </table> </body> </html>"
    
    import htql
    print(htql.query(page, "<td (id='cell1')>:tx &replace('XXXX') "))
    #[("<html> <body> <table> <tr><td id='cell1'>XXXX</td></tr> <tr> <td id='cell2'> test2 </td> </tr> </table> </body> </html>",)]
    
    print(htql.query(page, "<td (id='cell1')>:id &replace('ZZZZ') "))
    #[("<html> <body> <table> <tr><td id='ZZZZ'> test1 </td></tr> <tr> <td id='cell2'> test2 </td> </tr> </table> </body> </html>",)]
    
    print(htql.query(page, "<td (id like 'cell%')>:tx &replace('YYYY') "))
    #[("<html> <body> <table> <tr><td id='cell1'>YYYY</td></tr> <tr> <td id='cell2'>YYYY</td> </tr> </table> </body> </html>",)]
    

    【讨论】:

      猜你喜欢
      • 2011-06-18
      • 2018-12-27
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-02
      • 1970-01-01
      相关资源
      最近更新 更多