MCPcopy Create free account
hub / github.com/apify/crawlee-python / crawl

Method crawl

src/crawlee/http_clients/_impit.py:122–153  ·  view source on GitHub ↗
(
        self,
        request: Request,
        *,
        session: Session | None = None,
        proxy_info: ProxyInfo | None = None,
        statistics: Statistics | None = None,
        timeout: timedelta | None = None,
    )

Source from the content-addressed store, hash-verified

120
121 @override
122 async def crawl(
123 self,
124 request: Request,
125 *,
126 session: Session | None = None,
127 proxy_info: ProxyInfo | None = None,
128 statistics: Statistics | None = None,
129 timeout: timedelta | None = None,
130 ) -> HttpCrawlingResult:
131 client = self._get_client(proxy_info.url if proxy_info else None, session.cookies.jar if session else None)
132
133 try:
134 response = await client.request(
135 url=request.url,
136 method=request.method,
137 content=request.payload,
138 headers=dict(request.headers) if request.headers else None,
139 timeout=timeout.total_seconds() if timeout else None,
140 )
141 except TimeoutException as exc:
142 raise asyncio.TimeoutError from exc
143 except (TransportError, HTTPError) as exc:
144 if self._is_proxy_error(exc):
145 raise ProxyError from exc
146 raise
147
148 if statistics:
149 statistics.register_status_code(response.status_code)
150
151 request.loaded_url = str(response.url)
152
153 return HttpCrawlingResult(http_response=_ImpitResponse(response))
154
155 @override
156 async def send_request(

Callers

nothing calls this directly

Calls 6

_get_clientMethod · 0.95
_is_proxy_errorMethod · 0.95
HttpCrawlingResultClass · 0.90
_ImpitResponseClass · 0.85
requestMethod · 0.80
register_status_codeMethod · 0.80

Tested by

no test coverage detected