From 6b40af426fc90361c7d868b3f68a8206f8b5a538 Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Wed, 6 Nov 2024 22:14:33 +0200 Subject: [PATCH] Better logic for `css_first` and `xpath_first` --- scrapling/parser.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/scrapling/parser.py b/scrapling/parser.py index 583b1c5..fdf3bda 100644 --- a/scrapling/parser.py +++ b/scrapling/parser.py @@ -416,10 +416,9 @@ class Adaptor(SelectorsGeneration): :return: List as :class:`Adaptors` """ - try: - return self.css(selector, identifier, auto_match, auto_save, percentage)[0] - except (IndexError, TypeError,): - return None + for element in self.css(selector, identifier, auto_match, auto_save, percentage): + return element + return None def xpath_first(self, selector: str, identifier: str = '', auto_match: bool = False, auto_save: bool = False, percentage: int = 0, **kwargs: Any @@ -443,10 +442,9 @@ class Adaptor(SelectorsGeneration): :return: List as :class:`Adaptors` """ - try: - return self.xpath(selector, identifier, auto_match, auto_save, percentage, **kwargs)[0] - except (IndexError, TypeError,): - return None + for element in self.xpath(selector, identifier, auto_match, auto_save, percentage, **kwargs): + return element + return None def css(self, selector: str, identifier: str = '', auto_match: bool = False, auto_save: bool = False, percentage: int = 0