zoukankan      html  css  js  c++  java
  • Scrapy学习-18-去重原理

    Scrapy去重原理
    scrapy本身自带一个去重中间件
      scrapy源码中可以找到一个dupefilters.py去重器
     
    源码去重算法
    # 将返回值放到集合set中,实现去重
    
    def request_fingerprint(request, include_headers=None):
        if include_headers:
                include_headers = tuple(to_bytes(h.lower())
                                    for h in sorted(include_headers))
        cache = _fingerprint_cache.setdefault(request, {})
        if include_headers not in cache:
            fp = hashlib.sha1()
            fp.update(to_bytes(request.method))
            fp.update(to_bytes(canonicalize_url(request.url)))
            fp.update(request.body or b'')
            if include_headers:
                for hdr in include_headers:
                    if hdr in request.headers:
                        fp.update(hdr)
                        for v in request.headers.getlist(hdr):
                            fp.update(v)
            cache[include_headers] = fp.hexdigest()
        return cache[include_headers]
  • 相关阅读:
    高精度乘法
    阶乘
    高精度减法
    高精度加法
    曹冲养猪
    采药2
    nginx.conf详解
    系统盘脚本扩容
    IDEA中编写脚本并运行shell脚本
    常用的pdf工具
  • 原文地址:https://www.cnblogs.com/cq146637/p/9077500.html
Copyright © 2011-2022 走看看