Skip to main content
Extract custom fields from any structured data - not just articles. Perfect for e-commerce, job boards, real estate, forums, and any non-article content.

When to Use

  • E-commerce (products, prices, ratings)
  • Job boards (titles, companies, salaries)
  • Real estate (properties, prices, features)
  • Forums (posts, authors, replies)
  • Any non-article structured data

Basic Structure

spider.json

Field Extraction

Selectors

Nested Lists

Extract complex nested data structures:
Max nesting depth: 3 levels

Field Processors

8 processors available for data transformation:

strip

Remove whitespace

replace

Replace substring

regex

Extract with pattern

cast

Convert type (int, float, bool, str)

join

Join list to string

default

Fallback value

lowercase

Convert to lowercase

parse_datetime

Parse dates (stores as ISO strings)
See Data Processors for complete reference.

Chaining Processors

Processors execute sequentially, passing output to next processor:

Templates

Complete working examples in templates/:

E-commerce

templates/spider-ecommerce.jsonProduct pages with prices, ratings, stock

Job Boards

templates/spider-jobs.jsonJob listings with companies, salaries

Real Estate

templates/spider-realestate.jsonProperty listings with prices, features

Common Patterns

Extract Price

Extract Boolean

Handle Missing Fields

Storage Behavior

  • Standard fields (url, title, content, author, published_date) → Main DB columns
  • Custom fieldsmetadata_json column
  • show command displays custom fields
  • Exports flatten custom fields to top-level columns/keys

Workflow

1

Analyze sample page

2

Test selectors

3

Build callback config

Create callback with selectors and processors
4

Test on multiple pages

Verify selectors work across different pages
5

Import and test

Complete Examples

E-commerce Product

Job Listing

Forum Posts

Reserved Names

Never use these reserved callback names:
  • parse_article
  • parse_start_url
  • start_requests
  • from_crawler
  • closed
  • parse

Troubleshooting

Field Returns None

1

Test selector

2

Check if page needs browser rendering

3

Verify processor chain

Check if processor is failing and returning None

Wrong Type in Output

Add cast processor to convert type:

Rule References Undefined Callback

1

Add callback to callbacks dict

Ensure callback is defined in callbacks section
2

Or use null for navigation-only

Data Processors

Complete processor reference

Extractors

Content extraction strategies