基于规则丢弃重复的URL。
项目描述
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文件的文件路径列表(str 或 pathlib.Path)。
DUD_LOAD_RULE_PATHS = [ "/home/user/project/custom_rules1.json", ]
此设置的默认值为空。然而,如果安装了包 duplicate-url-discarder-rules 且 DUD_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-py3-none-any.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8d31005af854ffb42b59869e404fa74fc321f4d9f37fb7f6ffbe29ac587ca780 |
|
MD5 | aca4064e538452d14349eb61b803ab34 |
|
BLAKE2b-256 | 273aa45fb4c855bff464af8e652b2d76ef241d1edb3741ee0926c204b08af73f |