Skip to content

Latest commit

 

History

History

README.md

Examples

Repository root has a convenience Makefile for running the examples.

ScraperExample

Basic HTML scraper using ActoCrawlerHTML and SwiftSoup.

swift run ScraperExample

ImageScraperExample

Image scraper that combines ActoCrawlerNetworking and ActoCrawlerHTML.

swift run ImageScraperExample

PagingScraperExample

Scraper with pagination support built on ActoCrawlerHTML.

swift run PagingScraperExample

HeadlessBrowserExample

Headless browser crawler using playwright-python via PythonKit. This example launches a real browser (Chromium) to render pages, take screenshots, and extract links.

Prerequisites

  • uv (Python package manager)

Setup

  1. Install Python dependencies via uv:
cd Examples/HeadlessBrowserExample
uv sync
  1. Install Playwright browser binaries:
uv run playwright install

Run

swift run HeadlessBrowserExample

Screenshots will be saved to screenshots/ in the working directory.

HeadlessBrowserJSExample

Headless browser crawler using npm playwright via JavaScriptKit. This example builds Swift to WebAssembly, injects Playwright from Node.js, visits real pages, and saves screenshots through the JavaScriptKit adapter.

Prerequisites

  • A SwiftWasm-compatible swift toolchain. Do not use the default Xcode toolchain for the js command.
  • A matching wasm SDK. The validated SDK ID for this repository is DEVELOPMENT-SNAPSHOT-2025-09-14-a-wasm32-unknown-wasip1-threads.
  • Node.js and npm

Setup

  1. Install npm dependencies:
cd Examples/HeadlessBrowserJSExample
npm install
  1. Install Playwright browser binaries:
npx playwright install chromium

Build

swift package --disable-sandbox --swift-sdk DEVELOPMENT-SNAPSHOT-2025-09-14-a-wasm32-unknown-wasip1-threads js --product HeadlessBrowserJSExample
npm install --prefix .build/plugins/PackageToJS/outputs/Package

Run

node Examples/HeadlessBrowserJSExample/main.mjs

Screenshots will be saved to Examples/HeadlessBrowserJSExample/output/.