mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
调整execute_session_find(),未完成
This commit is contained in:
parent
7cca3f8d06
commit
3b3b6a55cb
@ -164,6 +164,7 @@ class SessionElement(DrissionElement):
|
|||||||
loc_or_str = loc_or_str[0], loc_str
|
loc_or_str = loc_or_str[0], loc_str
|
||||||
|
|
||||||
return execute_session_find(self.inner_ele, loc_or_str, mode, show_errmsg)
|
return execute_session_find(self.inner_ele, loc_or_str, mode, show_errmsg)
|
||||||
|
# return execute_session_find(self, loc_or_str, mode, show_errmsg)
|
||||||
|
|
||||||
def eles(self, loc_or_str: Union[tuple, str], show_errmsg: bool = False):
|
def eles(self, loc_or_str: Union[tuple, str], show_errmsg: bool = False):
|
||||||
"""返回当前元素下级所有符合条件的子元素 \n
|
"""返回当前元素下级所有符合条件的子元素 \n
|
||||||
@ -224,6 +225,10 @@ class SessionElement(DrissionElement):
|
|||||||
return ' '.join(self._inner_ele.attrs['class'])
|
return ' '.join(self._inner_ele.attrs['class'])
|
||||||
elif attr == 'text':
|
elif attr == 'text':
|
||||||
return self.text
|
return self.text
|
||||||
|
elif attr == 'outerHTML':
|
||||||
|
return self.inner_ele.html
|
||||||
|
elif attr == 'innerHTML':
|
||||||
|
return self.html
|
||||||
else:
|
else:
|
||||||
return self._inner_ele.attrs[attr]
|
return self._inner_ele.attrs[attr]
|
||||||
except:
|
except:
|
||||||
@ -231,6 +236,7 @@ class SessionElement(DrissionElement):
|
|||||||
|
|
||||||
|
|
||||||
def execute_session_find(page_or_ele: BaseParser,
|
def execute_session_find(page_or_ele: BaseParser,
|
||||||
|
# def execute_session_find(page_or_ele,
|
||||||
loc: tuple,
|
loc: tuple,
|
||||||
mode: str = 'single',
|
mode: str = 'single',
|
||||||
show_errmsg: bool = False) -> Union[SessionElement, List[SessionElement]]:
|
show_errmsg: bool = False) -> Union[SessionElement, List[SessionElement]]:
|
||||||
@ -249,18 +255,32 @@ def execute_session_find(page_or_ele: BaseParser,
|
|||||||
try:
|
try:
|
||||||
ele = None
|
ele = None
|
||||||
if loc_by == 'xpath':
|
if loc_by == 'xpath':
|
||||||
|
print(loc_str)
|
||||||
|
print(type(page_or_ele))
|
||||||
if 'PyQuery' in str(type(page_or_ele.element)):
|
if 'PyQuery' in str(type(page_or_ele.element)):
|
||||||
# or '()' in loc_str.split('[')[0]\
|
# from DrissionPage import MixPage
|
||||||
# or loc_str.split('/')[-1].startswith('@'):
|
# if isinstance(page_or_ele, MixPage):
|
||||||
# 从页面查找。第二个条件处理./node()、./text()等xpath语句,第三个条件处理获取属性的语句
|
# 从页面查找。
|
||||||
ele = page_or_ele.xpath(loc_str)
|
ele = page_or_ele.xpath(loc_str)
|
||||||
|
# ele = page_or_ele.response.html.xpath(loc_str)
|
||||||
elif 'HtmlElement' in str(type(page_or_ele.element)):
|
elif 'HtmlElement' in str(type(page_or_ele.element)):
|
||||||
# 从元素查找。Q_Q忘记了为什么要这样区分
|
# elif isinstance(page_or_ele, SessionElement):
|
||||||
elements = page_or_ele.element.xpath(loc_str)
|
# 从元素查找。这样区分是为了能找到上级元素
|
||||||
ele = [Element(element=e, url=page_or_ele.url) for e in elements]
|
try:
|
||||||
if not ele:
|
elements = page_or_ele.element.xpath(loc_str)
|
||||||
|
# elements = page_or_ele.inner_ele.element.xpath(loc_str)
|
||||||
|
ele = [Element(element=e, url=page_or_ele.url) for e in elements]
|
||||||
|
# ele = [Element(element=e, url=page_or_ele.inner_ele.url) for e in elements]
|
||||||
|
# ele = page_or_ele.xpath(loc_str)
|
||||||
|
# print(ele)
|
||||||
|
except AttributeError:
|
||||||
|
# print('c')
|
||||||
|
# loc_str=f'{page_or_ele.xpath}{loc_str.lstrip(".")}'
|
||||||
|
# print(loc_str)
|
||||||
|
# ele = page_or_ele.inner_ele.xpath(loc_str)
|
||||||
ele = page_or_ele.xpath(loc_str)
|
ele = page_or_ele.xpath(loc_str)
|
||||||
else: # 用css selector获取
|
else: # 用css selector获取
|
||||||
|
# pass
|
||||||
ele = page_or_ele.find(loc_str)
|
ele = page_or_ele.find(loc_str)
|
||||||
|
|
||||||
if mode == 'single':
|
if mode == 'single':
|
||||||
|
@ -114,6 +114,7 @@ class SessionPage(object):
|
|||||||
else:
|
else:
|
||||||
raise ValueError('Argument loc_or_str can only be tuple, str, SessionElement, Element.')
|
raise ValueError('Argument loc_or_str can only be tuple, str, SessionElement, Element.')
|
||||||
return execute_session_find(self.response.html, loc_or_ele, mode, show_errmsg)
|
return execute_session_find(self.response.html, loc_or_ele, mode, show_errmsg)
|
||||||
|
# return execute_session_find(self, loc_or_ele, mode, show_errmsg)
|
||||||
|
|
||||||
def eles(self, loc_or_str: Union[tuple, str], show_errmsg: bool = False) -> List[SessionElement]:
|
def eles(self, loc_or_str: Union[tuple, str], show_errmsg: bool = False) -> List[SessionElement]:
|
||||||
"""返回页面中所有符合条件的元素 \n
|
"""返回页面中所有符合条件的元素 \n
|
||||||
|
Loading…
x
Reference in New Issue
Block a user