1_2. base 文件代码

ok,今天是2025-12-16,我们来看剩下两个类
DrissionElement
这个类就有一些具体东西了,不过还是不够用,因为还是有抽象方法
class DrissionElement(BaseElement):
@property
def link(self):
# 获取链接,href下src字段
return self.attr("href") or self.attr("src")
@property
def css_path(self):
# 返回一个 CSS 选择器字符串,这个选择器可以唯一标识当前元素在页面中的位置,但是这个方法被抽象了
return self._get_ele_path(xpath=False)
@property
def xpath(self):
# 跟上面一样不过这个返回的是xpath的路径
return self._get_ele_path()
@property
def comments(self):
# 拿到网页上的注释,就是html的注释
return self.eles("xpath:.//comment()")
def texts(self, text_node_only=False):
"""
返回元素内所有直接子节点的文本,包括元素和文本节点
:param text_node_only: 是否只返回文本节点
:return: 文本列表
"""
texts = (
self.eles("xpath:/text()")
if text_node_only
else [
x if isinstance(x, str) else x.text
for x in self.eles("xpath:./text() | *")
]
)
return [
format_html(x.strip(" ").rstrip("\n"))
for x in texts
if x and sub("[\r\n\t ]", "", x) != ""
]写到这里的时候我感觉dp作者人是真的可以,pyi里面都写明白了,我感觉没啥必要写了
再写下去我就成注释搬运工了