我的公司从旧的CMS合并到新的CMS,最后按逻辑顺序构建了网站。我现在是需要找到大约500页的人,现在是404以找到新页面并将该信息插入重定向文件中。这500页将作为旧网站的列表来找我,我将不得不找到该网站的新网站版本。
当然,没有一个URL匹配(旧的ID匹配,新的URL匹配友好URL)。但对于大多数人来说,内容是一样的。请注意,我可以访问旧网站的暂存版本,而新网站是实时的,并且很好地引用。
知道这一点,我想知道是否有人可以告诉我一些可能会自动化的技巧,或者至少可以减轻手动抓取两个网站以找到相关版本的“痛苦”。
非常感谢
答案 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页的内容,所以这个过程并不难。
您应该有一个可以将网址映射到两个CMS的内容的结构。
假设我们将使用两个名为OldUrlContent
和newUrlContent
的地图,一个名为out.txt
的输出文本文件,另一个名为levenshtein.txt
的地图和另一个名为error.txt
的地图
只需在html文件的文件夹中递归迭代(如果有很多子文件夹),打开每个文件并将其存储在地图中。
在您的两张地图中都有每个网址和内容后,您必须在OldUrlContent
地图上进行迭代,以获取内容的散列值(类似于MD5)并比较哈希值对于newUrlContent
的每个散列内容。
2.1如果存在对应关系,请在out.txt
中保存对应关系。
2.2如果没有对应关系,可能是因为两个CMS之间页面内容的内容发生了变化。您可以使用Levenshtein distance(这不是一个万无一失的解决方案)来确定两个页面的内容是否相同。如果距离较远,则可以确定对应关系,然后将其保存在out.txt
和levenshtein.txt
中。
2.3如果您与Levenshtein距离没有对应关系,请将网址保留在error.txt
。
最后,您应该手动查看error.txt
并手动查找页面。
因为绝大多数内容都相同,levenshtein.txt
文件不应包含大量网址,但请查看相应内容,以确定。