1_2. base 文件代码

1_2. base 文件代码

des

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里面都写明白了,我感觉没啥必要写了
再写下去我就成注释搬运工了