pub struct SmartKind<P: BrowserProvider> { /* private fields */ }Expand description
HTTP-first execution with conservative browser promotion.
On the success path the detector inspects the response body and never promotes on status
alone. On the error path HttpKind has already classified statuses such as 403 and 503 before
an HTML context exists, so CrawlError::http_status is the only available signal. The
default status list is deliberately small ([403, 503]): 429 means rate limiting, which a
browser does not fix. The list is configurable, and sticky per-host promotion bounds repeated
HTTP-first costs.
Implementations§
Source§impl<P: BrowserProvider> SmartKind<P>
impl<P: BrowserProvider> SmartKind<P>
Sourcepub fn builder(provider: P) -> SmartKindBuilder<P>
pub fn builder(provider: P) -> SmartKindBuilder<P>
Starts configuring smart HTTP-first crawling backed by provider.
Trait Implementations§
Source§impl<P: BrowserProvider> CrawlerKind for SmartKind<P>
impl<P: BrowserProvider> CrawlerKind for SmartKind<P>
Source§type Context = SmartContext
type Context = SmartContext
The context passed to user handlers and lifecycle hooks. Read more
Source§fn start<'a>(
&'a self,
env: &'a CrawlerEnv,
) -> BoxFuture<'a, Result<(), CrawlError>>
fn start<'a>( &'a self, env: &'a CrawlerEnv, ) -> BoxFuture<'a, Result<(), CrawlError>>
Runs once before the crawler fetches any request.
Source§fn execute<'a>(
&'a self,
env: RequestEnv<'a>,
) -> BoxFuture<'a, Result<Self::Context, CrawlError>>
fn execute<'a>( &'a self, env: RequestEnv<'a>, ) -> BoxFuture<'a, Result<Self::Context, CrawlError>>
Executes one request attempt and constructs its handler context.
Source§fn observe(&self, ctx: &Self::Context) -> AttemptObservation
fn observe(&self, ctx: &Self::Context) -> AttemptObservation
Called once after
execute() succeeds; feeds statistics, HandledRequest, and
RetryStrategy metadata.Source§fn after_success<'a>(
&'a self,
ctx: &'a mut Self::Context,
) -> BoxFuture<'a, Result<(), CrawlError>>
fn after_success<'a>( &'a self, ctx: &'a mut Self::Context, ) -> BoxFuture<'a, Result<(), CrawlError>>
Runs after the user handler succeeds.
Source§fn cleanup(
&self,
outcome: RequestOutcome<Self::Context>,
) -> BoxFuture<'_, Result<(), CrawlError>>
fn cleanup( &self, outcome: RequestOutcome<Self::Context>, ) -> BoxFuture<'_, Result<(), CrawlError>>
Runs after every attempt concludes, regardless of its outcome.
Source§fn stop<'a>(
&'a self,
env: &'a CrawlerEnv,
) -> BoxFuture<'a, Result<(), CrawlError>>
fn stop<'a>( &'a self, env: &'a CrawlerEnv, ) -> BoxFuture<'a, Result<(), CrawlError>>
Runs once when crawler shutdown begins.
Source§fn before_request<'a>(
&'a self,
prep: &'a mut RequestPrep,
) -> Pin<Box<dyn Future<Output = Result<(), CrawlError>> + Send + 'a>>
fn before_request<'a>( &'a self, prep: &'a mut RequestPrep, ) -> Pin<Box<dyn Future<Output = Result<(), CrawlError>> + Send + 'a>>
Mutates a request before an attempt executes.
Auto Trait Implementations§
impl<P> !Freeze for SmartKind<P>
impl<P> !RefUnwindSafe for SmartKind<P>
impl<P> !UnwindSafe for SmartKind<P>
impl<P> Send for SmartKind<P>
impl<P> Sync for SmartKind<P>
impl<P> Unpin for SmartKind<P>
impl<P> UnsafeUnpin for SmartKind<P>
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