2.4 KiB
2.4 KiB
Generic extraction strategies
Sources persist a JSON strategy. Runtime behavior is determined only by this configuration—there are no hostname-specific parsers.
HTML
{
"mode": "html",
"request_url": "https://example.org/events",
"method": "GET",
"item_selector": ".event-card",
"title_selector": ".title",
"date_selector": ".date",
"time_selector": ".time",
"link_selector": "a.details",
"link_attribute": "href",
"description_selector": ".summary",
"location_selector": ".venue",
"date_format": ""
}
Selectors may read attributes using title_attribute, date_attribute, time_attribute, link_attribute, description_attribute, and location_attribute. Use :scope to read an attribute from the event container itself.
JSON API
{
"mode": "json",
"request_url": "https://example.org/api/sessions",
"method": "GET",
"items_path": "results.events",
"title_path": "name",
"date_path": "startDate",
"end_path": "endDate",
"description_path": "description",
"location_path": "venue.address",
"link_path": "url",
"disabled_path": "disabled"
}
Paths use dot notation. Numeric path components index arrays.
Joining metadata
{
"mode": "json",
"request_url": "https://example.org/api/sessions",
"items_path": "",
"date_path": "utcDate",
"link_path": "link",
"join_item_key": "movieId",
"join_title_path": "name",
"join_description_path": "summary",
"join_duration_path": "duration",
"join": {
"request_url": "https://example.org/api/movies",
"method": "GET",
"items_path": "",
"key_path": "id"
}
}
JSON containing HTML fragments
{
"mode": "html_fragment",
"request_url": "https://example.org/ajax",
"method": "POST",
"body": {"action": "events", "venue": "123"},
"html_path": "html",
"item_selector": ".event-card",
"title_selector": ".title",
"date_selector": ".date",
"link_selector": "a",
"link_attribute": "href",
"page_parameter": "paged",
"page_start": 1,
"max_pages": 10,
"total_pages_path": "pages_total"
}
Safety limits
- Request URLs still pass public-network SSRF validation.
- Redirect destinations are validated for normal HTML fetches.
- Responses default to a 5 MB limit.
- Pagination is capped at 20 pages.
- Browser-compatible headers are global; strategy headers may add endpoint-specific
AcceptorReferervalues.