BeautifulSoup 的页面中需要获取某个元素的 xpath 路径

BeautifulSoup 的页面中需要获取某个元素的 xpath 路径

python 复制代码
    def generate_xpath(tag, is_class=True):
        """
        根据页面信息获取指定内容的xpath路径
        :param tag: BeautifulSoup 的页面中需要获取xpath路径的对象
        :param is_class: 是否使用class进行创建xpath
        :return: xpath路径
        """
        def path_generator(t):
            components = []
            for parent in t.parents:
                if parent.name == '[document]':
                    break
                siblings = [sib for sib in parent.find_previous_siblings(t.name)
                            if sib.name == t.name]
                position = len(siblings) + 1
                components.append(f"{t.name}[{position}]")
                t = parent
            components.reverse()
            return '/' + '/'.join(components)

        # 优先检查唯一属性
        if tag.get('id'):
            return f"//{tag.name}[@id='{tag['id']}']"
        if is_class and tag.get('class'):
            return f"//{tag.name}[contains(@class,'{tag['class'][0]}')]"

        return path_generator(tag)
相关推荐
jieyu11193 小时前
Python 实战:Web 漏洞 Python POC 代码及原理详解(1)
python·web安全
三小河3 小时前
教你发布一个npm的组织包
前端
青椒a3 小时前
002.nestjs后台管理项目-数据库之prisma(上)
前端
米诺zuo3 小时前
react 中的useContext和Provider实践
前端·react.js
asdfsdgss3 小时前
Angular CDK 自适应布局技巧:响应式工具实操手册
前端·javascript·angular.js
QQLOVEYY3 小时前
Python和PyCharm的安装教程
python·pycharm
袁煦丞3 小时前
【私人导航员+内网穿透神器】Sun-Panel × cpolar让NAS变身你的数字管家:cpolar内网穿透实验室第564个成功挑战
前端·程序员·远程工作
爱吃的强哥3 小时前
Electron_Vue3 自定义系统托盘及退出二次确认
前端·javascript·electron
袁煦丞3 小时前
开启SSH后,你的NAS竟成私有云“变形金刚”:cpolar内网穿透实验室第645个成功挑战
前端·程序员·远程工作