Web crawler 查找500+;旧页
我的公司从一个旧的CMS合并到一个新的CMS,并最终按照逻辑顺序构建了网站。我现在的家伙,将需要找到大约500页,现在是404找到新的网页,并插入重定向文件中的信息。这500页将作为旧网站的列表呈现给我,我必须从中找到该内容的新网站版本 当然,没有一个URL匹配(旧的带有ID,新的带有友好URL)。但对绝大多数人来说,内容是一样的。请注意,我可以访问旧站点的暂存版本,而新站点是实时的,并且引用良好 知道了这一点,我想知道是否有人可以告诉我一些技巧,或许可以自动化,或者至少可以减轻手动抓取两个站点以查找相关版本时的“痛苦”Web crawler 查找500+;旧页,web-crawler,url-redirection,aem,google-crawlers,vignette,Web Crawler,Url Redirection,Aem,Google Crawlers,Vignette,我的公司从一个旧的CMS合并到一个新的CMS,并最终按照逻辑顺序构建了网站。我现在的家伙,将需要找到大约500页,现在是404找到新的网页,并插入重定向文件中的信息。这500页将作为旧网站的列表呈现给我,我必须从中找到该内容的新网站版本 当然,没有一个URL匹配(旧的带有ID,新的带有友好URL)。但对绝大多数人来说,内容是一样的。请注意,我可以访问旧站点的暂存版本,而新站点是实时的,并且引用良好 知道了这一点,我想知道是否有人可以告诉我一些技巧,或许可以自动化,或者至少可以减轻手动抓取两个站点
非常感谢以下伪代码应该可以工作:
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
i=0到oldUrlContent.size的
对应=假;
//完全相同的内容
对于j=0到newUrlContent.size和correspondance=false
如果md5(newUrlContent[i])==md5(newUrlContent[j])
写入out.txt,oldUrl+newUrl
对应=真
如果结束
结束
//Levenshtein距离
对于j=0到newUrlContent.size和correspondance=false
如果levenshtein(newUrlContent[i],newUrlContent[j])<可接受
写入out.txt,oldUrl+newUrl
写入levenshtein.txt,oldUrl+newUrl
对应=真
如果结束
结束
//什么也没找到
如果对应=假
写入error.txt,oldUrl
如果结束
结束
说明: 因为两个CMS都有url列表和500页的内容,所以这个过程并不难
OldUrlContent
和newUrlContent
的映射,一个名为out.txt
的输出文本文件,另一个名为levenshtein.txt
和另一个名为error.txt
只要在html文件的文件夹中递归迭代(如果有很多子文件夹),打开每个文件并将其存储在地图中OldUrlContent
映射上迭代,以获取内容的哈希值(类似MD5),并将哈希值与newUrlContent
的每个哈希内容进行比较
2.1如果存在对应项,则将对应项保存在out.txt
中
2.2如果没有对应,可能是因为两个CMS之间的页面内容发生了变化。您可以使用(这不是一个万无一失的解决方案)来确定两个页面的内容是否相同。如果距离很小,可以确定对应关系,并将其保存在out.txt
和levenshtein.txt
中
2.3如果即使与Levenshtein距离也没有对应关系,请将url保留在error.txt
中error.txt
,并手动查找页面
因为对于绝大多数人来说,内容是相同的,
levenshtein.txt
文件不应该包含很多url,但要确保查看相应的url。以下伪代码应该可以工作:
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
i=0到oldUrlContent.size的
对应=假;
//完全相同的内容
对于j=0到newUrlContent.size和correspondance=false
如果md5(newUrlContent[i])==md5(newUrlContent[j])
写入out.txt,oldUrl+newUrl
对应=真
如果结束
结束
//Levenshtein距离
对于j=0到newUrlContent.size和correspondance=false
如果levenshtein(newUrlContent[i],newUrlContent[j])<可接受
写入out.txt,oldUrl+newUrl
写入levenshtein.txt,oldUrl+newUrl
对应=真
如果结束
结束
//什么也没找到
如果对应=假
写入error.txt,oldUrl
如果结束
结束
说明: 因为两个CMS都有url列表和500页的内容,所以这个过程并不难
OldUrlContent
和newUrlContent
的映射,一个名为out.txt
的输出文本文件,另一个名为levenshtein.txt
和另一个名为error.txt
只要在html文件的文件夹中递归迭代(如果有很多子文件夹),打开每个文件并将其存储在地图中OldUrlContent
映射上迭代,以获取内容的哈希值(类似MD5),并将哈希值与newUrlContent
的每个哈希内容进行比较
2.1如果存在对应项,则将对应项保存在out.txt
中
2.2如果没有对应,可能是因为两个CMS之间的页面内容发生了变化。您可以使用(这不是一个万无一失的解决方案)来确定两个页面的内容是否相同。如果距离很小,可以确定对应关系,并将其保存在out.txt
和levenshtein.txt
中
2.3如果即使与Levenshtein距离也没有对应关系,请将url保留在error.txt
中error.txt
,并手动查找页面
因为对于大多数人来说,内容是相同的,levenshtein.txt
文件不应该包含太多内容