使用python hash()值作为引用号

时间:2014-07-22 11:59:37

标签: python hash reference scrapy

我正在写一个scrapy蜘蛛,收集各种在线报纸上的新闻文章。有问题的网站每天至少更新一次,我会像往常一样运行蜘蛛,我需要一些方法来过滤掉重复的内容(即我已经抓过的文章)。

在其他情况下,它与比较参考数字一样简单,但报纸文章没有任何参考编号。我想知道是否可以使用pythons hash()函数对标题进行散列,并将结果值用作实际参考号的替代值,仅用于比较目的?

从表面上看似乎可能,但你们有什么想法?

1 个答案:

答案 0 :(得分:2)

是的,你可以这样做,但是我没有使用hash(),因为hash()针对不同的任务进行了优化,并且很容易导致较大文本上的冲突(不同输入导致相同的哈希值。)

使用cryptographic hashing scheme代替; hashlib module使您可以访问MD5和其他算法,并生成不太可能产生冲突的输出。

出于您的目的,MD5会做得很好:

article_hash = hashlib.md5(scraped_info).hexdigest()

这有一个额外的好处,即无论操作系统或系统架构如何,MD5哈希总是会被计算出来; hash()无法提供此类保证。