代码之家  ›  专栏  ›  技术社区  ›  Sune Rievers

比较网站的文本内容

  •  1
  • Sune Rievers  · 技术社区  · 16 年前

    我正在尝试文本比较/基本的抄袭检测,并希望在一个网站到一个网站的基础上尝试。然而,我有点困在寻找一个适当的方式来处理文本。

    你将如何处理和比较两个网站的内容,以防剽窃?

    我在想这样的伪代码:

    // extract text
    foreach website in websites
      crawl website - store structure so pages are only scanned once
      extract text blocks from all pages - store this is in list
    
    // compare      
    foreach text in website1.textlist
      compare with all text in website2.textlist
    

    我认识到这个解决方案可以很快地积累大量数据,因此它可能只能与非常小的网站一起工作。

    我还没有决定实际的文本比较算法,但现在我更感兴趣的是让实际的过程算法首先工作。

    我认为最好将所有文本提取为单独的文本片段(从段落、表格、标题等),因为文本可以在页面上移动。

    我将在C(可能是ASP.NET)中实现这一点。

    我对你可能有的任何意见或建议都很感兴趣,所以请开枪!:)

    2 回复  |  直到 16 年前
        1
  •  2
  •   Eric J.    16 年前

    我解决这个问题的方法是在谷歌上搜索特定的、相当独特的文本块,你要保护它们的版权。

    尽管如此,如果您想构建自己的解决方案,以下是一些评论:

    • 尊重robots.txt。如果他们将网站标记为“不爬行”,那么他们很可能不会试图从你的内容中获益。
    • 随着网站的变化,您需要刷新存储的网站结构。
    • 您需要正确地将文本与HTML标记和JavaScript分开。
    • 您基本上需要对页面的整个文本(删除标记/脚本)进行全文搜索,以查找要保护的文本。有一些很好的,公开的算法。
        2
  •  1
  •   No Refunds No Returns    16 年前

    你可能会对片段检测更感兴趣。例如,很多页面上都会有“主页”这个词,你不在乎。但几乎不可能有很多页面在整个页面上都有完全相同的单词。因此,您可能希望比较和报告长度为4、5、6、7、8等的exct匹配的页面,以及每个长度的字数。指定一个分数和权重,如果你超过了你的“幻数”,报告可疑的施乐者。

    对于C,您可以使用webbrowser()获取页面并相当容易地获取其文本。抱歉,没有现成的代码示例可以复制/粘贴,但msdn通常有相当好的示例。