0

我的公司从旧的 CMS 合并到新的 CMS 中,最终按逻辑顺序构建了网站。我现在需要找到大约 500 个页面,现在是 404 个页面才能找到新页面并将该信息插入重定向文件中。这 500 页将作为来自旧网站的列表提供给我,我必须从中找到该内容的新网站版本。

当然,没有一个 URL 匹配(旧的带有 ID,新的带有友好的 URL)。但是对于绝大多数人来说,内容是相同的。请注意,我可以访问旧站点的暂存版本,而新站点是实时的并且被很好地引用。

知道了这一点,我想知道是否有人可以告诉我一些技巧来自动化或至少减轻手动抓取两个站点以查找相关版本的“痛苦”。

非常感谢

4

1 回答 1

3

以下伪代码应该可以工作:

FOR i = 0 TO oldUrlContent.size
    correspondance = false;

    // Exact same content
    FOR j = 0 TO newUrlContent.size And correspondance = false
        IF md5(newUrlContent[i]) == md5(newUrlContent[j])
           WRITE to out.txt, oldUrl + newUrl
           correspondance = true
        END IF
    END FOR

    // Levenshtein distance
    FOR j = 0 TO newUrlContent.size And correspondance = false
        IF levenshtein(newUrlContent[i],newUrlContent[j]) < ACCEPTABLE_LEVENSHTEIN
           WRITE to out.txt, oldUrl + newUrl
           WRITE to levenshtein.txt, oldUrl + newUrl
           correspondance = true
        END IF
    END FOR

    // Nothing found
    IF correspondance = false
        WRITE to error.txt, oldUrl
    END IF
END FOR

解释:

因为您拥有两个 CMS 的 url 列表和 500 个页面的内容,所以这个过程并不难。

  1. 您应该有一个结构可以将 url 映射到两个 CMS 的内容。

    假设我们将使用两个名为OldUrlContentand的映射newUrlContent,一个名为 的输出文本文件out.txt,另一个名为 levenshtein.txt,另一个名为error.txt

    只需在您的 html 文件的文件夹中递归迭代(如果有很多子文件夹),打开每个文件并将其存储在您的地图中。

  2. 一旦您在两个地图中都获得了每个 url 和内容,您将不得不在OldUrlContent地图上进行迭代,以获取内容的散列值(类似于 MD5)并将散列值与您的每个散列内容进行比较newUrlContent

    2.1 如果有对应关系,请将对应关系保存在out.txt.

    2.2 如果没有对应关系,可能是因为你的两个CMS之间的一个页面的内容发生了变化。您可以使用Levenshtein 距离(这不是一个万无一失的解决方案)来确定两个页面的内容是否相同。如果距离较小,则可以确定对应关系并将其保存在out.txt和中levenshtein.txt

    2.3 如果您即使与 Levenshtein 距离也没有对应关系,请将 url 保留在error.txt.

最后,您应该手动查看error.txt并手动查找页面。

因为对于绝大多数人来说,内容是相同的,levenshtein.txt文件不应该包含很多 url,而是查看对应关系,以确保。

于 2014-11-26T19:09:28.223 回答