找到500多个旧页面的提示

时间:2014-11-26 03:32:36

标签: web-crawler url-redirection aem google-crawlers vignette

我的公司从旧的CMS合并到新的CMS,最后按逻辑顺序构建了网站。我现在是需要找到大约500页的人,现在是404以找到新页面并将该信息插入重定向文件中。这500页将作为旧网站的列表来找我,我将不得不找到该网站的新网站版本。

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

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

非常感谢

1 个答案:

答案 0 :(得分: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的网址列表和500页的内容,所以这个过程并不难。

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

    假设我们将使用两个名为OldUrlContentnewUrlContent的地图,一个名为out.txt的输出文本文件,另一个名为levenshtein.txt的地图和另一个名为error.txt的地图

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

  2. 在您的两张地图中都有每个网址和内容后,您必须在OldUrlContent地图上进行迭代,以获取内容的散列值(类似于MD5)并比较哈希值对于newUrlContent的每个散列内容。

    2.1如果存在对应关系,请在out.txt中保存对应关系。

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

    2.3如果您与Levenshtein距离没有对应关系,请将网址保留在error.txt

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

    因为绝大多数内容都相同,levenshtein.txt文件不应包含大量网址,但请查看相应内容,以确定。