From caa205483ccc4029ad31a50f63fe9d5a9dc203a6 Mon Sep 17 00:00:00 2001 From: g1879 Date: Thu, 22 Oct 2020 18:20:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=85=83=E7=B4=A0el?= =?UTF-8?q?e()=E5=A4=84=E7=90=86=E7=B1=BB=E4=BC=BC'./node()'=E3=80=81'./te?= =?UTF-8?q?xt()'=E5=A4=B1=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- DrissionPage/session_element.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/DrissionPage/session_element.py b/DrissionPage/session_element.py index 64b117b..56ae6cc 100644 --- a/DrissionPage/session_element.py +++ b/DrissionPage/session_element.py @@ -246,9 +246,11 @@ def execute_session_find(page_or_ele: BaseParser, try: ele = None if loc_by == 'xpath': - if 'PyQuery' in str(type(page_or_ele.element)): # 从页面查找 + if 'PyQuery' in str(type(page_or_ele.element)) or '()' in loc_str.split('[')[0]: + # 从页面查找。后面的条件是处理./node()、./text()等xpath语句时用的 ele = page_or_ele.xpath(loc_str) - elif 'HtmlElement' in str(type(page_or_ele.element)): # 从元素查找 + elif 'HtmlElement' in str(type(page_or_ele.element)): + # 从元素查找。Q_Q忘记了为什么要这样区分 elements = page_or_ele.element.xpath(loc_str) ele = [Element(element=e, url=page_or_ele.url) for e in elements] else: # 用css selector获取 @@ -257,7 +259,7 @@ def execute_session_find(page_or_ele: BaseParser, if mode == 'single': return SessionElement(ele[0]) if ele else None elif mode == 'all': - return [SessionElement(e) for e in ele] + return [SessionElement(e) if isinstance(e, Element) else e for e in ele] except: if show_errmsg: print('Element(s) not found.', loc)