pub struct AvoidTraps<F> { /* private fields */ }Expand description
A facade that bounds expanding URL branches, see
FrontierExt::avoid_traps.
When a budget is exceeded, the whole origin/path prefix is blocked for
this facade’s lifetime. Seeds already queued there are skipped on pop
and reported inwards as Report::Skipped. In-flight work can finish.
Other prefixes and origins continue. Refusals are logged and counted
by refused, separately from crawler request totals.
This does not inspect page content, execute CSS, or replace robots.txt and deduplication. Keep this facade outside retry/revisit facades so it also checks the seeds they hand out. Snapshots contain pending seeds, not the heuristic state; persistent storage keeps blocked seeds until they are popped and skipped.
Implementations§
Source§impl<F> AvoidTraps<F>
impl<F> AvoidTraps<F>
Trait Implementations§
Source§impl<F: Debug> Debug for AvoidTraps<F>
impl<F: Debug> Debug for AvoidTraps<F>
Source§impl<F: Frontier> Frontier for AvoidTraps<F>
impl<F: Frontier> Frontier for AvoidTraps<F>
Source§async fn push(&self, seed: Seed) -> Result<Admission>
async fn push(&self, seed: Seed) -> Result<Admission>
Offers a seed, which the frontier may refuse. Read more
Source§async fn pop(&self) -> Result<NextSeed>
async fn pop(&self) -> Result<NextSeed>
Takes the next seed that is ready to be crawled. Read more
Auto Trait Implementations§
impl<F> !Freeze for AvoidTraps<F>
impl<F> RefUnwindSafe for AvoidTraps<F>where
F: RefUnwindSafe,
impl<F> Send for AvoidTraps<F>where
F: Send,
impl<F> Sync for AvoidTraps<F>where
F: Sync,
impl<F> Unpin for AvoidTraps<F>where
F: Unpin,
impl<F> UnsafeUnpin for AvoidTraps<F>where
F: UnsafeUnpin,
impl<F> UnwindSafe for AvoidTraps<F>where
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<F> FrontierExt for Fwhere
F: Frontier,
impl<F> FrontierExt for Fwhere
F: Frontier,
Source§fn dedup_with<S: SeenSet>(self, seen: S) -> Dedup<Self, S>
fn dedup_with<S: SeenSet>(self, seen: S) -> Dedup<Self, S>
Refuses seeds seen before, remembering them in
seen.Source§fn allow_hosts<I>(
self,
hosts: I,
) -> Filter<Self, impl Fn(&Seed) -> bool + Send + Sync + 'static>
fn allow_hosts<I>( self, hosts: I, ) -> Filter<Self, impl Fn(&Seed) -> bool + Send + Sync + 'static>
Refuses seeds outside
hosts and their subdomains, e.g. to keep a
crawl from following links off-site.Source§fn avoid_traps(self) -> AvoidTraps<Self>
fn avoid_traps(self) -> AvoidTraps<Self>
Bounds expanding URL prefixes with conservative, configurable
heuristics. Opt in alongside robots.txt and deduplication; legitimate
large archives or opaque identifiers may need higher budgets. Read more
Source§fn avoid_traps_with(self, policy: TrapPolicy) -> AvoidTraps<Self>
fn avoid_traps_with(self, policy: TrapPolicy) -> AvoidTraps<Self>
Bounds expanding URL prefixes using
policy, see Self::avoid_traps.Source§fn retry(self, max_retries: u32) -> Retry<Self>
fn retry(self, max_retries: u32) -> Retry<Self>
Retries failed seeds up to
max_retries times with exponential
backoff.Source§fn retry_with(self, policy: RetryPolicy) -> Retry<Self>
fn retry_with(self, policy: RetryPolicy) -> Retry<Self>
Retries failed seeds according to
policy.Source§fn tag_backoff(self) -> TagBackoff<Self>
fn tag_backoff(self) -> TagBackoff<Self>
Holds back seeds of paused tags.
Source§fn revisit<T: Revisit>(self) -> Revisits<Self, T>where
Self: Schedule,
fn revisit<T: Revisit>(self) -> Revisits<Self, T>where
Self: Schedule,
Crawls pages again on a schedule: a seed reported done or failed is
crawled again after its tag’s
Revisit::interval, so the crawl
keeps going, waiting for the next revisit once nothing else is
queued. Read moreSource§fn score<S: Score>(self, scorer: S) -> Scored<Self, S>
fn score<S: Score>(self, scorer: S) -> Scored<Self, S>
Adds
scorer’s score to the priority of every seed pushed, so a
frontier that orders by priority crawls the best seeds first. Read moreSource§fn layer<L: FrontierLayer<Self>>(self, layer: L) -> L::Frontier
fn layer<L: FrontierLayer<Self>>(self, layer: L) -> L::Frontier
Wraps the frontier with a custom facade.