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