|
16 | 16 | )
|
17 | 17 | from playwright._impl._errors import Error as PlaywrightError
|
18 | 18 |
|
19 |
| -from ._validators import validate, CamoufoxConfig |
| 19 | +from ._validators import validate_fetch as _validate |
20 | 20 | from ._base import SyncSession, AsyncSession, StealthySessionMixin
|
21 | 21 | from scrapling.core.utils import log
|
22 | 22 | from scrapling.core._types import (
|
@@ -297,23 +297,22 @@ def fetch(
|
297 | 297 | :param selector_config: The arguments that will be passed in the end while creating the final Selector's class.
|
298 | 298 | :return: A `Response` object.
|
299 | 299 | """
|
300 |
| - # Validate all resolved parameters |
301 |
| - params = validate( |
302 |
| - dict( |
303 |
| - google_search=self._get_with_precedence(google_search, self.google_search, _UNSET), |
304 |
| - timeout=self._get_with_precedence(timeout, self.timeout, _UNSET), |
305 |
| - wait=self._get_with_precedence(wait, self.wait, _UNSET), |
306 |
| - page_action=self._get_with_precedence(page_action, self.page_action, _UNSET), |
307 |
| - extra_headers=self._get_with_precedence(extra_headers, self.extra_headers, _UNSET), |
308 |
| - disable_resources=self._get_with_precedence(disable_resources, self.disable_resources, _UNSET), |
309 |
| - wait_selector=self._get_with_precedence(wait_selector, self.wait_selector, _UNSET), |
310 |
| - wait_selector_state=self._get_with_precedence(wait_selector_state, self.wait_selector_state, _UNSET), |
311 |
| - network_idle=self._get_with_precedence(network_idle, self.network_idle, _UNSET), |
312 |
| - load_dom=self._get_with_precedence(load_dom, self.load_dom, _UNSET), |
313 |
| - solve_cloudflare=self._get_with_precedence(solve_cloudflare, self.solve_cloudflare, _UNSET), |
314 |
| - selector_config=self._get_with_precedence(selector_config, self.selector_config, _UNSET), |
315 |
| - ), |
316 |
| - CamoufoxConfig, |
| 300 | + params = _validate( |
| 301 | + [ |
| 302 | + ("google_search", google_search, self.google_search), |
| 303 | + ("timeout", timeout, self.timeout), |
| 304 | + ("wait", wait, self.wait), |
| 305 | + ("page_action", page_action, self.page_action), |
| 306 | + ("extra_headers", extra_headers, self.extra_headers), |
| 307 | + ("disable_resources", disable_resources, self.disable_resources), |
| 308 | + ("wait_selector", wait_selector, self.wait_selector), |
| 309 | + ("wait_selector_state", wait_selector_state, self.wait_selector_state), |
| 310 | + ("network_idle", network_idle, self.network_idle), |
| 311 | + ("load_dom", load_dom, self.load_dom), |
| 312 | + ("solve_cloudflare", solve_cloudflare, self.solve_cloudflare), |
| 313 | + ("selector_config", selector_config, self.selector_config), |
| 314 | + ], |
| 315 | + _UNSET, |
317 | 316 | )
|
318 | 317 |
|
319 | 318 | if self._closed: # pragma: no cover
|
@@ -381,8 +380,9 @@ def handle_response(finished_response: SyncPlaywrightResponse):
|
381 | 380 | page_info.page, first_response, final_response, params.selector_config
|
382 | 381 | )
|
383 | 382 |
|
384 |
| - # Mark the page as finished for next use |
385 |
| - page_info.mark_finished() |
| 383 | + # Close the page, to free up resources |
| 384 | + page_info.page.close() |
| 385 | + self.page_pool.pages.remove(page_info) |
386 | 386 |
|
387 | 387 | return response
|
388 | 388 |
|
@@ -616,22 +616,22 @@ async def fetch(
|
616 | 616 | :param selector_config: The arguments that will be passed in the end while creating the final Selector's class.
|
617 | 617 | :return: A `Response` object.
|
618 | 618 | """
|
619 |
| - params = validate( |
620 |
| - dict( |
621 |
| - google_search=self._get_with_precedence(google_search, self.google_search, _UNSET), |
622 |
| - timeout=self._get_with_precedence(timeout, self.timeout, _UNSET), |
623 |
| - wait=self._get_with_precedence(wait, self.wait, _UNSET), |
624 |
| - page_action=self._get_with_precedence(page_action, self.page_action, _UNSET), |
625 |
| - extra_headers=self._get_with_precedence(extra_headers, self.extra_headers, _UNSET), |
626 |
| - disable_resources=self._get_with_precedence(disable_resources, self.disable_resources, _UNSET), |
627 |
| - wait_selector=self._get_with_precedence(wait_selector, self.wait_selector, _UNSET), |
628 |
| - wait_selector_state=self._get_with_precedence(wait_selector_state, self.wait_selector_state, _UNSET), |
629 |
| - network_idle=self._get_with_precedence(network_idle, self.network_idle, _UNSET), |
630 |
| - load_dom=self._get_with_precedence(load_dom, self.load_dom, _UNSET), |
631 |
| - solve_cloudflare=self._get_with_precedence(solve_cloudflare, self.solve_cloudflare, _UNSET), |
632 |
| - selector_config=self._get_with_precedence(selector_config, self.selector_config, _UNSET), |
633 |
| - ), |
634 |
| - CamoufoxConfig, |
| 619 | + params = _validate( |
| 620 | + [ |
| 621 | + ("google_search", google_search, self.google_search), |
| 622 | + ("timeout", timeout, self.timeout), |
| 623 | + ("wait", wait, self.wait), |
| 624 | + ("page_action", page_action, self.page_action), |
| 625 | + ("extra_headers", extra_headers, self.extra_headers), |
| 626 | + ("disable_resources", disable_resources, self.disable_resources), |
| 627 | + ("wait_selector", wait_selector, self.wait_selector), |
| 628 | + ("wait_selector_state", wait_selector_state, self.wait_selector_state), |
| 629 | + ("network_idle", network_idle, self.network_idle), |
| 630 | + ("load_dom", load_dom, self.load_dom), |
| 631 | + ("solve_cloudflare", solve_cloudflare, self.solve_cloudflare), |
| 632 | + ("selector_config", selector_config, self.selector_config), |
| 633 | + ], |
| 634 | + _UNSET, |
635 | 635 | )
|
636 | 636 |
|
637 | 637 | if self._closed: # pragma: no cover
|
@@ -701,8 +701,9 @@ async def handle_response(finished_response: AsyncPlaywrightResponse):
|
701 | 701 | page_info.page, first_response, final_response, params.selector_config
|
702 | 702 | )
|
703 | 703 |
|
704 |
| - # Mark the page as finished for next use |
705 |
| - page_info.mark_finished() |
| 704 | + # Close the page, to free up resources |
| 705 | + await page_info.page.close() |
| 706 | + self.page_pool.pages.remove(page_info) |
706 | 707 |
|
707 | 708 | return response
|
708 | 709 |
|
|
0 commit comments