Skip to main content

turbo-surf (Python)

Browserless, native-speed web crawler + extractor with a real V8 JS-render tier — a PyO3 binding over the turbo-surf Rust engine. Fetch-free: you pass a page's HTML in, and get a view out (Markdown, visible text, links, a typed extraction, an accessibility tree). For JS-gated pages, the engine runs the page's own scripts in a true V8 isolate over a native DOM — no headless Chromium.

import turbo_surf as ts

html = open("page.html").read()

ts.markdown(html, base_url="https://example.com/")   # -> Markdown str
ts.text(html)                                        # -> visible text
ts.links(html, base_url="https://example.com/")      # -> list[str]

# Typed extraction: a JSON schema maps field names to selector specs.
schema = '{"title": {"selector": "h1"}, "prices": {"selector": ".price", "list": true}}'
ts.extract(html, schema, base_url="https://example.com/")   # -> JSON str

# JS-gated page: run its own scripts, read the hydrated DOM.
hydrated = ts.render(html, script, base_url="https://example.com/")

Fatal faults (malformed schema JSON, a render-tier failure) raise turbo_surf.TurboSurfError; the non-JS views never raise.

Install

pip install turbo-surf

Prebuilt abi3 wheels (CPython 3.8+) are published for Linux (x86_64/aarch64), macOS (arm64), and Windows (x64).

API

function returns notes
markdown(html, base_url="") str Markdown render
text(html) str visible text
title(html) str document <title>
html(html) str re-serialized HTML
links(html, base_url="") list[str] resolved hyperlink targets
interactive_elements(html, base_url="") JSON str links/buttons/inputs
accessibility_tree(html) JSON str a11y tree
hydration_state(html) JSON str hydration probe
detect(html) JSON str is the page JS-gated?
query(html, selector, kind=None) JSON str kind = "css"/"xpath"/auto
extract(html, schema_json, base_url="") JSON str typed extraction
evaluate(html, script) str run script over the DOM (sync)
render(html, script, base_url="") str hydrated HTML after page scripts run
transform(src, ts=False, jsx=False) str TS/JSX → classic JS (swc)

MIT licensed.

Metadata

Release files for turbo-surf 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for turbo-surf 0.4.0
File Size Uploaded
turbo_surf-0.4.0.tar.gz 557.9 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for turbo-surf 0.4.0
File
turbo_surf-0.4.0-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
turbo_surf-0.4.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details
turbo_surf-0.4.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 abi3 Linux glibc 2.17+ ARM64 Details
turbo_surf-0.4.0-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details

Total release size: 122.1 MB

Release files / turbo_surf-0.4.0.tar.gz

Download URL turbo_surf-0.4.0.tar.gz
Size 557.9 kB
Tags Source
SHA-256 checksum
How to use checksums
8cf7f0d492e064a4935df4fa4a3bb61c7583e722850fedda00464c3236406e29
BLAKE2b-256 checksum
How to use checksums
1b4a089838d6f415989c9ce9dd8b544c584f8ba149bd897387f5d822d67cc3da
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / turbo_surf-0.4.0-cp38-abi3-win_amd64.whl

Download URL turbo_surf-0.4.0-cp38-abi3-win_amd64.whl
Size 28.1 MB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
689cc321ab30ca707b3d4b5170cae28e3ea657d972b1cf86b4444126f8e167b4
BLAKE2b-256 checksum
How to use checksums
6257eb53a1fd3c78ad4ceea3b31e2a95b571c30ef35a636b1a7b7667f5387132
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / turbo_surf-0.4.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL turbo_surf-0.4.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 31.3 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
40cd7fc6297d8c5387b3d0c78d2007cb757f1f49eeb6cdab67b520bb0f92c6f9
BLAKE2b-256 checksum
How to use checksums
e29f09a1e31f197c967cc6ef1b6bfe5eb3f11974380079c336a5a2d2231e3873
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / turbo_surf-0.4.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL turbo_surf-0.4.0-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 33.1 MB
Tags CPython 3.8 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
f84c475d8e571b2c4096f032cd5c22bde22e998991e4a7beaf7afe9ab9cbc3c0
BLAKE2b-256 checksum
How to use checksums
5d364c2134d93267d641efbfdfb59789e9116ef562a3b66ac414ac6a7e07371a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release files / turbo_surf-0.4.0-cp38-abi3-macosx_11_0_arm64.whl

Download URL turbo_surf-0.4.0-cp38-abi3-macosx_11_0_arm64.whl
Size 29.0 MB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
26a837823298e89fcadd83fdb007fd26992dde745a3c1a4ad86f079ab3135a2f
BLAKE2b-256 checksum
How to use checksums
d195b1a1893306c386a6dcee7a0e50c4c00c1c04e2866c89464e6556e6251124
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.14.1

Release history Release notifications | RSS feed

0.5.3

5 release files

0.5.2

5 release files

0.5.1

5 release files

0.5.0

5 release files

0.4.4

5 release files

0.4.3

5 release files

0.4.2

5 release files

0.4.1

5 release files

This release

0.4.0 This release

5 release files

0.3.6

5 release files

0.3.5

5 release files

0.3.3

5 release files

0.3.1

5 release files

0.3.0

5 release files

0.2.7

5 release files

0.2.5

5 release files

0.2.4

5 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page