Skip to main content

servo_fetch/
lib.rs

1//! Fetch, render, and extract web content as Markdown, JSON, or screenshots with an embedded Servo browser engine.
2//! No Chromium, no containers, no external processes.
3//!
4//! ## Async usage
5//!
6//! ```no_run
7//! # async fn run() -> servo_fetch::Result<()> {
8//! let md = servo_fetch::markdown("https://example.com").await?;
9//! # Ok(()) }
10//! ```
11//!
12//! ## Sync usage
13//!
14//! ```no_run
15//! let md = servo_fetch::blocking::markdown("https://example.com")?;
16//! # Ok::<(), servo_fetch::Error>(())
17//! ```
18
19#![deny(unsafe_code)]
20
21pub mod blocking;
22pub mod extract;
23pub mod sanitize;
24pub mod schema;
25pub mod visibility;
26
27pub(crate) mod bridge;
28pub(crate) mod client;
29pub(crate) mod cookies;
30pub(crate) mod crawl;
31pub(crate) mod error;
32pub(crate) mod fetch;
33pub(crate) mod layout;
34pub(crate) mod map;
35pub(crate) mod net;
36pub(crate) mod pdf;
37pub(crate) mod robots;
38pub(crate) mod runtime;
39pub(crate) mod scope;
40pub(crate) mod screenshot;
41pub(crate) mod sys;
42
43pub use client::{Client, ClientBuilder, ScreenshotOptions};
44pub use cookies::{CookieSpec, load_cookies};
45pub use crawl::{CrawlOptions, CrawlPage, CrawlResult, crawl, crawl_each};
46pub use error::{Error, Result};
47pub use fetch::{ConsoleLevel, ConsoleMessage, FetchOptions, Page, extract_json, fetch, markdown, text};
48pub use map::{MapOptions, MappedUrl, map};
49pub use net::{NetworkPolicy, validate_url};
50pub use visibility::{VisibilityFlags, VisibilityPolicy};
51
52/// Set the network policy. Must be called at most once, before any engine use.
53pub fn init(policy: NetworkPolicy) {
54    bridge::set_engine_policy(policy);
55}