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.1

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.1
File Size Uploaded
turbo_surf-0.4.1.tar.gz 566.4 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for turbo-surf 0.4.1
File
turbo_surf-0.4.1-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details
turbo_surf-0.4.1-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.1-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 abi3 Linux glibc 2.17+ ARM64 Details
turbo_surf-0.4.1-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details

Total release size: 122.0 MB

Release files / turbo_surf-0.4.1.tar.gz

Download URL turbo_surf-0.4.1.tar.gz
Size 566.4 kB
Tags Source
SHA-256 checksum
How to use checksums
34bb9c14327a8ec1ec85926641efcc5507e5c9053d29b4d248861fedbcb5f5b6
BLAKE2b-256 checksum
How to use checksums
89220e4b77df2638634883711c426a7f1a3c85480c8c8c2d9fd414877d1b4bc0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL turbo_surf-0.4.1-cp38-abi3-win_amd64.whl
Size 28.2 MB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
936336354115b5e790e7da34b997493a7dc16d4106ed585960a242bbe9ef246d
BLAKE2b-256 checksum
How to use checksums
02580445c31807bea48dc3379236496ff9f17f797eab2cd81b1f9c24d8bd0070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL turbo_surf-0.4.1-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 31.4 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
0f5377743dd9df1237460254b6aa94202f3a11d3cbae5dd6054505413a952d3a
BLAKE2b-256 checksum
How to use checksums
fbf5eddd40f792f831d82998bc00dfd59ca25a9411b81cc71f6df229d93e3ff5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL turbo_surf-0.4.1-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
e3a60bede98eb0502b13ef06b7dc0c14d7fdccc0d237275d31d3d33cbf688a10
BLAKE2b-256 checksum
How to use checksums
c631acfc0201e38dd97adb9f5b26e83a6117d9e70c082deaaf4a5b52804c5905
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

Download URL turbo_surf-0.4.1-cp38-abi3-macosx_11_0_arm64.whl
Size 28.9 MB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3aaab9b18eb6630aea9453c4576bc8a099f83b1218b40d5b2831e9482f3484e9
BLAKE2b-256 checksum
How to use checksums
1cf316efc1f986d091f8ffbeab1e974e47e1f1d9c71c4f996e07ef800043e90a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

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

This release

0.4.1 This release

5 release files

0.4.0

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