Web crawler 查找500+;旧页

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)。但对绝大多数人来说,内容是一样的。请注意,我可以访问旧站点的暂存版本,而新站点是实时的,并且引用良好 知道了这一点,我想知道是否有人可以告诉我一些技巧,或许可以自动化,或者至少可以减轻手动抓取两个站点

我的公司从一个旧的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页的内容,所以这个过程并不难

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

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

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

  • 一旦在两个映射中都有了每个url和内容,就必须在
    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页的内容,所以这个过程并不难

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

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

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

  • 一旦在两个映射中都有了每个url和内容,就必须在
    OldUrlContent
    映射上迭代,以获取内容的哈希值(类似MD5),并将哈希值与
    newUrlContent
    的每个哈希内容进行比较

    2.1如果存在对应项,则将对应项保存在
    out.txt

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

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

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

    因为对于大多数人来说,内容是相同的,
    levenshtein.txt
    文件不应该包含太多内容