跳转到主要内容

基于规则丢弃重复的URL。

项目描述

PyPI Version Supported Python Versions Build Status Coverage report Documentation Status

duplicate-url-discarder 包含一个Scrapy指纹器,该指纹器使用可定制的URL处理器在指纹之前规范化URL。

快速入门

安装

pip install duplicate-url-discarder

或者,您也可以通过以下方式将duplicate-url-discarder-rules中的预定义规则包含到安装中:

pip install duplicate-url-discarder[rules]

如果安装了这些规则,当DUD_LOAD_RULE_PATHS设置留空时,它们将自动使用(参见配置)。

需要 Python 3.8+

使用

如果您使用Scrapy >= 2.10,可以通过启用提供的Scrapy插件来启用指纹器

ADDONS = {
    "duplicate_url_discarder.Addon": 600,
}

如果您使用其他修改请求指纹器的Scrapy插件,例如scrapy-zyte-api插件,请使用更高的优先级值配置此插件,以便将回退指纹器设置为正确的值。

对于较旧的Scrapy版本,您需要直接启用指纹器

REQUEST_FINGERPRINTER_CLASS = "duplicate_url_discarder.Fingerprinter"

如果您已经使用了一个非默认的请求指纹器,无论是您自己实现的还是来自Scrapy插件(如scrapy-zyte-api)的,请将其设置为回退

DUD_FALLBACK_REQUEST_FINGERPRINTER_CLASS = "scrapy_zyte_api.ScrapyZyteAPIRequestFingerprinter"

duplicate_url_discarder.Fingerprinter 将生成请求URL的标准形式,并使用配置的回退指纹生成器(默认为Scrapy自带,除非在 DUD_FALLBACK_REQUEST_FINGERPRINTER_CLASS 设置中配置了另一个)来获取这些URL的指纹。如果请求的元信息中 "dud" 的值为 False,则直接处理,而不生成标准形式。

URL处理器

duplicate-url-discarder 使用 URL处理器 来生成URL的标准版本。处理器使用 URL规则 进行配置。每个URL规则指定了一个处理器应用的URL模式,以及要使用的特定处理器参数。

当前可用的URL处理器如下:

  • queryRemoval:移除查询字符串参数 (即key=value),其中键由参数指定。如果URL中给定键出现多次且值不同,则所有这些键都将被移除。

  • queryRemovalExcept:与 queryRemoval 类似,但保留参数中指定的键,同时删除其他所有键。

URL规则

URL规则是一个字典,指定了 url-matcher URL模式,URL处理器名称,URL处理器参数以及用于排序规则的顺序。它们从包含序列化规则的JSON文件中加载。

[
  {
    "args": [
      "foo",
      "bar",
    ],
    "order": 100,
    "processor": "queryRemoval",
    "urlPattern": {
      "include": [
        "foo.example"
      ]
    }
  },
  {
    "args": [
      "PHPSESSIONID"
    ],
    "order": 100,
    "processor": "queryRemoval",
    "urlPattern": {
      "include": []
    }
  }
]

所有非通用规则(具有非空包含模式的规则)都按照其顺序字段应用以匹配请求URL。如果没有非通用规则匹配URL,则应用通用规则。

配置

duplicate-url-discarder 使用以下Scrapy设置:

  • DUD_LOAD_RULE_PATHS:它应是一个指向包含要应用的URL规则的JSON文件的文件路径列表(strpathlib.Path)。

    DUD_LOAD_RULE_PATHS = [
        "/home/user/project/custom_rules1.json",
    ]

    此设置的默认值为空。然而,如果安装了包 duplicate-url-discarder-rulesDUD_LOAD_RULE_PATHS 被留空,则自动使用该包中的规则。

  • DUD_ATTRIBUTES_PER_ITEM:它是一个将类型(或其导入路径)映射到该类型实例中存在的属性列表的映射。

    例如

    DUD_ATTRIBUTES_PER_ITEM = {
        "zyte_common_items.Product": [
            "canonicalUrl",
            "brand",
            "name",
            "gtin",
            "mpn",
            "productId",
            "sku",
            "color",
            "size",
            "style",
        ],
        # Other than strings representing import paths, types are supported as well.
        dict: ["name"]
    }

    这允许DUD选择用于为项目生成签名的属性。然后,使用该签名来比较不同项目的身份。例如,duplicate_url_discarder.DuplicateUrlDiscarderPipeline 使用此功能来找到重复的项目,以便可以删除它们。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分发

duplicate_url_discarder-0.2.0.tar.gz (16.8 kB 查看哈希值

上传时间

构建分发

duplicate_url_discarder-0.2.0-py3-none-any.whl (13.9 kB 查看哈希值

上传于 Python 3

由以下支持