跳转到主要内容

Scrapy中间件,用于向项目添加额外的“魔法”字段

项目描述

https://travis-ci.org/scrapy-plugins/scrapy-magicfields.svg?branch=master https://codecov.io/gh/scrapy-plugins/scrapy-magicfields/branch/master/graph/badge.svg

这是一个基于配置设置 MAGIC_FIELDSMAGIC_FIELDS_OVERRIDE 的Scrapy爬虫中间件,用于向项目添加额外的字段。

安装

使用 pip 安装 scrapy-magicfields

$ pip install scrapy-magicfields

配置

  1. 通过在您的 settings.py 文件中包含它,将 MagicFieldsMiddleware 添加到 SPIDER_MIDDLEWARES

    SPIDER_MIDDLEWARES = {
        'scrapy_magicfields.MagicFieldsMiddleware': 100,
    }

    这里的优先级 100 仅作为一个例子。请根据您已启用其他中间件的情况设置其值。

  2. 使用 MAGIC_FIELDS(可选 MAGIC_FIELDS_OVERRIDE)在您的 setting.py 中启用中间件。

使用方法

MAGIC_FIELDSMAGIC_FIELDS_OVERRIDE 都是字典

  • 键是目标字段名称,

  • 它们的值是一个字符串,可以接受 魔法变量,由开始的 $(美元符号)标识,这些变量将在运行时被相应的值替换。

一些魔法变量也接受参数,并在魔法名称之后指定,使用 :(列)作为分隔符。

您可以使用 MAGIC_FIELDS 设置项目全局魔法,并使用 MAGIC_FIELDS_OVERRIDE 对特定蜘蛛进行调整。

如果有多个参数,它们必须用 ,(逗号符号)分隔。所以通用的魔法格式是

$<magic name>[:arg1,arg2,...]

支持的魔法变量

$time

项被抓取时的 UTC 时间戳,格式为 '%Y-%m-%d %H:%M:%S'

$unixtime

项被抓取时的 unixtime(自纪元以来的秒数,即 time.time())。

$isotime

项被抓取时的 UTC 时间戳,格式为 '%Y-%m-%dT%H:%M:%S'

$spider

必须跟一个参数,该参数是蜘蛛的一个属性(例如传递给它的参数)。

$env

环境变量的值。它接受作为参数的变量名。

$jobid

作业 id(即 $env:SCRAPY_JOB 的快捷方式)

$jobtime

作业开始时的 UTC 时间戳,格式为 '%Y-%m-%d %H:%M:%S'

$response

访问一些响应属性。

$response:url

从其中提取项的 URL。

$response:status

响应 http 状态。

$response:headers

响应 http 头。

$setting

访问给定的 Scrapy 设置。它接受一个参数:设置的名称。

$field

允许将一个字段的值复制到另一个字段。它的参数是源字段。如果使用使用魔法字段填充的字段作为源,则效果不可预测。

示例

以下配置将为每个抓取项添加两个字段

  • 'timestamp',它将被填充为字符串 'item scraped at <scraped timestamp>'

  • 'spider',它将包含蜘蛛名称

MAGIC_FIELDS = {
    "timestamp": "item scraped at $time",
    "spider": "$spider:name"
}

以下配置将 URL 复制到字段 sku

MAGIC_FIELDS = {
    "sku": "$field:url"
}

魔法也接受一个正则表达式参数,允许从由魔法生成的值中提取和分配只有部分。您必须使用 r'' 语句指定它。

假设您的项的 URL 看起来像 'http://www.example.com/product.html?item_no=345',并且您想将项目编号分配给 sku 字段。

以下示例与上一个示例类似,但有一个第二个正则表达式参数,将执行此任务

MAGIC_FIELDS = {
    "sku": "$field:url,r'item_no=(\d+)'"
}

项目详情


下载文件

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

源代码分发

scrapy-magicfields-1.1.0.tar.gz (3.9 kB 查看哈希值)

上传时间 源代码

构建分发

scrapy_magicfields-1.1.0-py2.py3-none-any.whl (3.9 kB 查看哈希值)

上传时间 Python 2 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面