替换html文件中的出现

时间:2016-08-29 13:46:34

标签: awk sed html-parsing

我必须在数千个html文件上替换某些类型,并且我打算使用linux脚本。 以下是我必须要做的替换的一些例子

来自: <a class="wiki_link" href="/WebSphere+Application+Server">

收件人: <a class="wiki_link" href="/confluence/display/WIKIHAB1/WebSphere%20Application%20Server">

这意味着,将/ confluence / display / WIKIHAB1添加为前缀,并将“+”替换为“%20”。

我会为其他标签做同样的事情,比如img,iframe等等......

首先,我应该使用哪种工具来制作它?桑达? AWK?其他

如果有人有任何例子,我真的很感激。

由于

1 个答案:

答案 0 :(得分:0)

经过一番研究,我发现了美丽的汤。它是一个解析html文件的python库,非常易于使用且文档很好。 我没有使用Python的经验,可以毫无问题地编写代码。 下面是我在问题中提到的替换python代码的示例。

#!/usr/bin/python

import os
from bs4 import BeautifulSoup

#Replaces plus sign(+) by %20 and add /confluence... prefix to each
#href parameter at anchor(a) tag that has wiki_link in class parameter
def fixAnchorTags(soup):
    tags = soup.find_all('a')

    for tag in tags:
        newhref = tag.get("href")

        if newhref is not None:
            if tag.get("class") is not None and "wiki_link" in tag.get("class"):
                newhref = newhref.replace("+", "%20")
                newhref = "/confluence/display/WIKIHAB1" + newhref
                tag['href'] = newhref

#Creates a folder to save the converted files                   
def setup():
    if not os.path.exists("converted"):
        os.makedirs("converted")

#Run all methods for each html file in the current folder
def run():
    for file in os.listdir("."):
        if file.endswith(".html"):
            print "Converting " + file
            htmlfile = open(file, "r")
            converted = open("converted/"+file, "w")
            soup = BeautifulSoup(htmlfile, "html.parser")

            fixAnchorTags(soup)

            converted.write(soup.prettify("UTF-8"))
            converted.close()
            htmlfile.close()

setup()
run()