mirror of
https://gitee.com/g1879/DrissionPage.git
synced 2024-12-10 04:00:23 +08:00
增加parents、nexts、prevs函数,待测试
This commit is contained in:
parent
f1394d4cdd
commit
fc65332eff
@ -71,19 +71,31 @@ class DriverElement(DrissionElement):
|
||||
@property
|
||||
def parent(self):
|
||||
"""父级元素"""
|
||||
loc = 'xpath', './..'
|
||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
||||
return self.parents()
|
||||
|
||||
@property
|
||||
def next(self):
|
||||
"""下一个兄弟元素"""
|
||||
loc = 'xpath', './following-sibling::*[1]'
|
||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
||||
return self.nexts()
|
||||
|
||||
@property
|
||||
def prev(self):
|
||||
"""上一个兄弟元素"""
|
||||
loc = 'xpath', './preceding-sibling::*[1]'
|
||||
return self.prevs()
|
||||
|
||||
def parents(self, num: int = 1):
|
||||
"""N层父级元素"""
|
||||
loc = 'xpath', f'.{"/.." * num}'
|
||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
||||
|
||||
def nexts(self, num: int = 1):
|
||||
"""下N个兄弟元素"""
|
||||
loc = 'xpath', f'./following-sibling::*[{num}]'
|
||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
||||
|
||||
def prevs(self, num: int = 1):
|
||||
"""上N个兄弟元素"""
|
||||
loc = 'xpath', f'./preceding-sibling::*[{num}]'
|
||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
||||
|
||||
def attr(self, attr: str) -> str:
|
||||
|
@ -49,28 +49,43 @@ class SessionElement(DrissionElement):
|
||||
return self._inner_ele.tag
|
||||
|
||||
@property
|
||||
def parent(self) -> Union[DrissionElement, None]:
|
||||
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
||||
try:
|
||||
return SessionElement(Element(element=self.inner_ele.element.xpath('..')[0], url=self.inner_ele.url))
|
||||
except IndexError:
|
||||
return None
|
||||
def parent(self):
|
||||
"""父级元素"""
|
||||
return self.parents()
|
||||
|
||||
@property
|
||||
def next(self) -> Union[DrissionElement, None]:
|
||||
def next(self):
|
||||
"""下一个兄弟元素"""
|
||||
return self.nexts()
|
||||
|
||||
@property
|
||||
def prev(self):
|
||||
"""上一个兄弟元素"""
|
||||
return self.prevs()
|
||||
|
||||
def parents(self, num: int = 1):
|
||||
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
||||
try:
|
||||
return SessionElement(
|
||||
Element(element=self.inner_ele.element.xpath('./following-sibling::*[1]')[0], url=self.inner_ele.url))
|
||||
Element(element=self.inner_ele.element.xpath(f'..{"/.." * (num - 1)}')[0], url=self.inner_ele.url))
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
@property
|
||||
def prev(self) -> Union[DrissionElement, None]:
|
||||
def nexts(self, num: int = 1):
|
||||
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
||||
try:
|
||||
return SessionElement(
|
||||
Element(element=self.inner_ele.element.xpath('./preceding-sibling::*[1]')[0], url=self.inner_ele.url))
|
||||
Element(element=self.inner_ele.element.xpath(f'./following-sibling::*[{num}]')[0],
|
||||
url=self.inner_ele.url))
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
def prevs(self, num: int = 1):
|
||||
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
||||
try:
|
||||
return SessionElement(
|
||||
Element(element=self.inner_ele.element.xpath(f'./preceding-sibling::*[{num}]')[0],
|
||||
url=self.inner_ele.url))
|
||||
except IndexError:
|
||||
return None
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user