我有一个最近网络抓取的链接网址数据库。 我正在开发可视化/路径查找套件,并且遇到了我的数据集的一个小问题。
由于我抓取的网站是由人类编写的,因此链接样式和语法各不相同,即指向“http://home.page”而非“http://home.page/”或“http://home.page/index.html”的链接。< / p>
显然这些网址都是指同一页面,但由于它们的网址不相同,因此它们会作为不同的条目存储在我的数据库中。
这使得页面之间的路径查找变得困难,因为无论您选择哪种样式,只检测到实际链接的一小部分。
我想知道是否要为给定的网址生成所有可能的“同义词”链接,或者更有可能检测这两个链接是否是同义的(指向同一页面),假设没有自定义路由规则已经适用。
我正在使用M.E.A.N. stack和d3.js用于可视化,因此JavaScript是首选语言。
要明确的是,我并没有真正要求对我设置数据库的方式提出批评(尽管建议总是受欢迎的),并且对重新运行爬行并不感兴趣。
我想知道是否存在可以识别两个URL是否可能是基于Web开发约定的同义词的现有启发式算法,谢谢!
答案 0 :(得分:1)
http://home.page
和http://home.page/
是等效的,因为HTTP需要某种资源路径,因此浏览器会发送/
。
但是,http://home.page/
和http://home.page/index.html
不必然等效,除非从一个重定向到另一个,否则您无法知道重写规则是什么在服务器上。
这里唯一可以做的就是比较内容,看它是否相同。然而,即使这样,也可能存在差异,因为页面通常是动态生成的。 (一个微不足道的差异的一个很好的例子是,当一些开发人员将页面生成时间放在页脚中时。这意味着不同URL的结果是不同的,即使它们从内容的角度来看基本相同。)
我还应该注意,很多页面的元标记都指定了规范的URL。这是搜索引擎用来确定页面的正常URL的内容。但无法保证这将存在或正确。