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
|
@property
|
||||||
def parent(self):
|
def parent(self):
|
||||||
"""父级元素"""
|
"""父级元素"""
|
||||||
loc = 'xpath', './..'
|
return self.parents()
|
||||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def next(self):
|
def next(self):
|
||||||
"""下一个兄弟元素"""
|
"""下一个兄弟元素"""
|
||||||
loc = 'xpath', './following-sibling::*[1]'
|
return self.nexts()
|
||||||
return self.ele(loc, timeout=1, show_errmsg=False)
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def prev(self):
|
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)
|
return self.ele(loc, timeout=1, show_errmsg=False)
|
||||||
|
|
||||||
def attr(self, attr: str) -> str:
|
def attr(self, attr: str) -> str:
|
||||||
|
@ -49,28 +49,43 @@ class SessionElement(DrissionElement):
|
|||||||
return self._inner_ele.tag
|
return self._inner_ele.tag
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def parent(self) -> Union[DrissionElement, None]:
|
def parent(self):
|
||||||
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
"""父级元素"""
|
||||||
try:
|
return self.parents()
|
||||||
return SessionElement(Element(element=self.inner_ele.element.xpath('..')[0], url=self.inner_ele.url))
|
|
||||||
except IndexError:
|
|
||||||
return None
|
|
||||||
|
|
||||||
@property
|
@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元素对象读取上下级关系后再重新打包"""
|
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
||||||
try:
|
try:
|
||||||
return SessionElement(
|
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:
|
except IndexError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
@property
|
def nexts(self, num: int = 1):
|
||||||
def prev(self) -> Union[DrissionElement, None]:
|
|
||||||
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
"""requests_html的Element打包了lxml的元素对象,从lxml元素对象读取上下级关系后再重新打包"""
|
||||||
try:
|
try:
|
||||||
return SessionElement(
|
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:
|
except IndexError:
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user