Bootstrap

python爬虫用redis去重多种方法

什么是增量爬虫
爬虫过程中,常常要对目标网站的新数据进行抓取,遇到已经爬过的网页需要进行过滤。本文介绍用redis数据库的高效去重。
把所有爬过的url都放在redis中,以后每次爬取链接之前,先把url添加进去,如果能添加进去,说明是没爬过的,如果添加不进去,说明该链接有爬取过。

方法1

普通爬取时,核心的代码逻辑如下

import hashlib
import redis
 
def get_md5(val):
    """把目标数据进行哈希,用哈希值去重更快"""
    md5 = hashlib.md5()
    md5.update(val.encode('utf-8'))
    return md5.hexdigest()
 
def add_url(url):
    red = redis.Redis(host='106.1xxx', password='redixxxx', port=6379, db=0)
    res = red.sadd('TEST:urlset', get_md5(url)) # 注意是 保存set的方式
    if res == 0:  # 若返回0,说明插入不成功,表示有重复
        return False
    else:
        return True
 
if __name__ == '__main__':
    print(add_url(