|
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