Scrapy中间件,用于向项目添加额外的“魔法”字段
项目描述
这是一个基于配置设置 MAGIC_FIELDS 和 MAGIC_FIELDS_OVERRIDE 的Scrapy爬虫中间件,用于向项目添加额外的字段。
安装
使用 pip 安装 scrapy-magicfields
$ pip install scrapy-magicfields
配置
通过在您的 settings.py 文件中包含它,将 MagicFieldsMiddleware 添加到 SPIDER_MIDDLEWARES
SPIDER_MIDDLEWARES = { 'scrapy_magicfields.MagicFieldsMiddleware': 100, }
这里的优先级 100 仅作为一个例子。请根据您已启用其他中间件的情况设置其值。
使用 MAGIC_FIELDS(可选 MAGIC_FIELDS_OVERRIDE)在您的 setting.py 中启用中间件。
使用方法
MAGIC_FIELDS 和 MAGIC_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的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e2a3edec49be246e410c4de2a31d271710e0c8e945f6476de7e1c9bbdb5e045f |
|
MD5 | b14513d5a51439972d13859cc65fa990 |
|
BLAKE2b-256 | 9a5578044b09b40eb909e0e3922bb4fd30914a1a3f634055ec9850d1880c113f |
scrapy_magicfields-1.1.0-py2.py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 56538546df1c8f8edf334f40b1a14904fbfce88763cfb4e8f15e7b7a7ce49158 |
|
MD5 | 9fa6a1be5c050ad75427f5ed4f115211 |
|
BLAKE2b-256 | 5365e9766e89031dd1a6ed4f2fae055e2c5ac07b681f5b1548afed125f487809 |