Skip to content

Commit b228a9e

Browse files
authored
Log all requests/responses (debug level) (#37)
1 parent 5036227 commit b228a9e

File tree

1 file changed

+23
-0
lines changed

1 file changed

+23
-0
lines changed

scrapy_playwright/handler.py

+23
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
Page,
1212
PlaywrightContextManager,
1313
Request as PlaywrightRequest,
14+
Response as PlaywrightResponse,
1415
Route,
1516
)
1617
from scrapy import Spider, signals
@@ -35,6 +36,26 @@
3536
logger = logging.getLogger("scrapy-playwright")
3637

3738

39+
def _make_request_logger(context_name: str) -> Callable:
40+
def _log_request(request: PlaywrightRequest) -> None:
41+
logger.debug(
42+
f"[Context={context_name}] Request: <{request.method.upper()} {request.url}> "
43+
f"(resource type: {request.resource_type}, referrer: {request.headers.get('referer')})"
44+
)
45+
46+
return _log_request
47+
48+
49+
def _make_response_logger(context_name: str) -> Callable:
50+
def _log_request(response: PlaywrightResponse) -> None:
51+
logger.debug(
52+
f"[Context={context_name}] Response: <{response.status} {response.url}> "
53+
f"(referrer: {response.headers.get('referer')})"
54+
)
55+
56+
return _log_request
57+
58+
3859
class ScrapyPlaywrightDownloadHandler(HTTPDownloadHandler):
3960
def __init__(self, crawler: Crawler) -> None:
4061
super().__init__(settings=crawler.settings, crawler=crawler)
@@ -107,6 +128,8 @@ async def _create_page(self, request: Request) -> Page:
107128
context = await self._create_browser_context(context_name, context_kwargs)
108129
self.contexts[context_name] = context
109130
page = await context.new_page()
131+
page.on("request", _make_request_logger(context_name))
132+
page.on("response", _make_response_logger(context_name))
110133
self.stats.inc_value("playwright/page_count")
111134
if self.default_navigation_timeout:
112135
page.set_default_navigation_timeout(self.default_navigation_timeout)

0 commit comments

Comments
 (0)