From 68ac9d4d05cfbcea3f2646579f84156e15df301d Mon Sep 17 00:00:00 2001 From: Karim shoair Date: Mon, 17 Mar 2025 05:58:40 +0200 Subject: [PATCH] fix(parser): Lowering memory with replacing `body` property with `html_content` --- scrapling/parser.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/scrapling/parser.py b/scrapling/parser.py index 146ea47..98e0864 100644 --- a/scrapling/parser.py +++ b/scrapling/parser.py @@ -26,7 +26,7 @@ class Adaptor(SelectorsGeneration): __slots__ = ( 'url', 'encoding', '__auto_match_enabled', '_root', '_storage', '__keep_comments', '__huge_tree_enabled', '__attributes', '__text', '__tag', - '__keep_cdata', '__raw_body' + '__keep_cdata' ) def __init__( @@ -72,20 +72,17 @@ class Adaptor(SelectorsGeneration): raise ValueError("Adaptor class needs text, body, or root arguments to work") self.__text = '' - self.__raw_body = '' if root is None: if text is None: if not body or not isinstance(body, bytes): raise TypeError(f"body argument must be valid and of type bytes, got {body.__class__}") body = body.replace(b"\x00", b"").strip() - self.__raw_body = body.replace(b"\x00", b"").strip().decode() else: if not isinstance(text, str): raise TypeError(f"text argument must be of type str, got {text.__class__}") body = text.strip().replace("\x00", "").encode(encoding) or b"" - self.__raw_body = text.strip() # https://lxml.de/api/lxml.etree.HTMLParser-class.html parser = html.HTMLParser( @@ -250,10 +247,7 @@ class Adaptor(SelectorsGeneration): """Return the inner html code of the element""" return TextHandler(etree.tostring(self._root, encoding='unicode', method='html', with_tail=False)) - @property - def body(self) -> TextHandler: - """Return raw HTML code of the element/page without any processing when possible or return `Adaptor.html_content`""" - return TextHandler(self.__raw_body) or self.html_content + body = html_content def prettify(self) -> TextHandler: """Return a prettified version of the element's inner html-code"""