JSON Output
Set output_format on the Pipeline (or --output on the CLI) to persist extracted data automatically.
CLI
uv run yosoi --url https://qscrape.dev/l1/news --contract NewsArticle --output jsonCombine multiple formats in one run:
uv run yosoi --url https://qscrape.dev/l1/news --contract NewsArticle --output json,csvPython
# output.pyimport asyncioimport yosoi as ys
class Article(ys.Contract): title: str = ys.Title() author: str = ys.Author()
async def main(): pipeline = ys.Pipeline( ys.auto_config(), contract=Article, output_format='json', ) async for item in pipeline.scrape('https://qscrape.dev/l1/news'): print(item.get('title'))
asyncio.run(main())Run it:
uv run python output.pyResults are written to .yosoi/content/<domain>/results.json. Multi-item pages are saved as {"items": [...]}.
Multiple Formats at Once
pipeline = ys.Pipeline(config, contract=Article, output_format=['json', 'csv'])Supported Formats
| Format | Extension | Notes |
|---|---|---|
json | .json | One file per domain |
jsonl | .jsonl | One JSON object per line (append-friendly) |
ndjson | .jsonl | Alias for jsonl |
csv | .csv | Flat tabular output |
md | .md | Markdown table |
xlsx | .xlsx | Requires openpyxl (uv add yosoi[tabular]) |
parquet | .parquet | Requires pyarrow (uv add yosoi[tabular]) |