我将编写一个爬虫程序,将结果存储在数据库(MongoDB)中。
当然,使用URL作为一个可能的查询参数很重要。但是,它也存在问题:
此数据库的目标:
当然,除了“只是抓住它并存储确切的URL而不担心重复”之外的任何方案都会产生一些误报。误报是一个我认为与以前抓取的URL相同的URL,但实际上是不同的。
答案 0 :(得分:1)
默认情况下我认为,你的密钥可以是1000字节。你真的会有更大的网址吗?最糟糕的是,我很确定这是一个你可以改变的硬编码常数。
关于你的其他观点:
有很多内容同义词,您只需抓取一个页面就不知道这一点。 - 嗯?你是说一个网站可能是重复的,只有细微差别的内容集中在关键短语上,你想避免索引那些?
如何处理HTTP 301,302,303,307等。存储原始网址或新位置?对于链接缩短程序而言,这尤其是一个问题。 - 我会想到目的地......如果有人多次缩短同一目的地怎么办?如果缩短的链接过期或缩短版离线怎么办?我认为这些与目标网址发生的事情相比更有可能。
“last.fm”问题。 lastfm.com == last.fm~ = lastfm.it(等),该网站不使用30x结果代码来表示。它只提供来自多个域的内容。 - 你能写一个简单的算法来检查可能类似的域吗? Last.fm包含lastfm.com所做的6/9个字符,前6个是相同的。如果您还要存储一些元数据,您可以检查具有高相关性的匹配项是否可能是相同的文档。
鉴于数据库中可能包含或未包含的任何网址,请让我查询以前是否以前以合理的准确度抓取了该文档。 - 见最后一点
希望这有帮助!