WebScraper-Caller
Small CLI that reads a JSON file of objects, calls render-and-parse on
each object's url, and records the resulting output file paths back into
the JSON for later use. The only field it cares about is url — everything
else is optional and passed through untouched.
Installation
pip install scrape-applied-links
playwright install chromium
This installs the scrape-applied-links command along with its
render-url dependency (which provides render-and-parse).
Installing from source instead:
pip install -e .
playwright install chromium
Input format
The tool only requires a url field on each object — everything else is
optional and simply passed through untouched. It accepts either of two
shapes for the input file:
A flat list of objects, each needing nothing but a url:
[
{ "url": "https://example.com/careers/123" },
{ "url": "https://example.com/careers/456" }
]
An object mapping arbitrary labels (e.g. dates) to lists of objects — useful if you want to group entries, such as by the date they were scraped:
{
"2026-09-16": [
{ "url": "https://example.com/careers/123" },
{ "url": "https://example.com/careers/456" }
]
}
Objects can carry any extra fields you like (company, title,
description, etc.) — they're ignored by this tool and left as-is. If a
company field is present it's shown in log output while processing, but
it isn't required.
| Field | Type | Required | Notes |
|---|---|---|---|
url |
string | yes | The page passed to render-and-parse. Objects without a url are skipped entirely. |
| anything else | any | no | Passed through untouched. |
After an object is processed, this tool adds two fields to it:
| Field | Type | Description |
|---|---|---|
rendered_page |
string | Path to the rendered_page_N.json file written by render-and-parse for this url. |
parsed_page |
string | Path to the parsed_page_N.json file written by render-and-parse for this url. |
Usage
scrape-applied-links [json_file] [options]
json_file(optional, positional) — path to the input JSON file (either input shape described above). Defaults tolinks_applied_by_date.jsonin the current directory.
Options
| Flag | Description |
|---|---|
--dry-run |
List the URLs that would be processed without actually calling render-and-parse. |
--force |
Re-scrape jobs that already have a rendered_page/parsed_page recorded. Without this flag, jobs already processed are skipped. |
--output-dir <dir> |
Directory where render-and-parse writes its rendered_page_N.json / parsed_page_N.json files. Defaults to the current directory. |
Examples
Process the default file:
scrape-applied-links
Preview which URLs would be scraped, without calling anything:
scrape-applied-links --dry-run
Re-run and re-scrape every job, even ones already processed:
scrape-applied-links --force
Use a different input file and write render output to a subfolder:
scrape-applied-links my_links.json --output-dir out/
What it does
- Loads the JSON file (a flat list or a label-keyed object of lists) and
collects every object that has a
url. - Skips objects that already have a
rendered_pagevalue, unless--forceis passed. - For each remaining object, runs
render-and-parse <url>(in--output-dirif given). - Detects the newly created
rendered_page_N.jsonandparsed_page_N.jsonfiles and adds their paths to that job's entry asrendered_pageandparsed_page. - Saves the JSON file after each successfully processed job, so progress isn't lost if a later URL fails.
- If any URLs failed, prints a summary of them at the end and exits with a non-zero status.
Release files for scrape-applied-links 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| scrape_applied_links-0.1.0.tar.gz | 6.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| scrape_applied_links-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 11.4 kB
Release files / scrape_applied_links-0.1.0.tar.gz
| Download URL | scrape_applied_links-0.1.0.tar.gz |
|---|---|
| Size | 6.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e2348f9b3264c9a90680557f025f3bf3257deb55474ad919803675bf138d1c97
|
|
BLAKE2b-256 checksum How to use checksums |
1a2c71149f148946ee97270de9950dcd53004149d9f5dcead5e4371b4ad6c7dc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / scrape_applied_links-0.1.0-py3-none-any.whl
| Download URL | scrape_applied_links-0.1.0-py3-none-any.whl |
|---|---|
| Size | 5.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bebb6ffe7d8b7fdd5eb50f6f8e8b919f484337918eddad96f58d9f9b43d741fd
|
|
BLAKE2b-256 checksum How to use checksums |
5d5e503e993f489306d231f3692eca09f364801ec484e7ec0120efceb69ced89
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|