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)
相关推荐
Jinuss6 小时前
源码分析之React中createFiberRoot方法创建Fiber根节点
前端·javascript·react.js
HarmonLTS6 小时前
Python人工智能深度开发:技术体系、核心实践与工程化落地
开发语言·人工智能·python·算法
weixin_462446236 小时前
Python 解析 Excel 图表(Chart)信息实战:从 xlsx 中提取标题、字体和数据
python·数据分析·excel·报表自动化
weixin_462446236 小时前
使用 Python 脚本自动化管理 Docker 容器:启动、修改密码、删除及系统资源监控
python·docker·自动化·系统监控
Jinuss6 小时前
源码分析之React中ReactDOMRoot实现
前端·javascript·react.js
weixin_462446237 小时前
Python 异步下载文件实战:使用 asyncio + aiohttp 实现高并发下载
python·并发下载
bloglin999997 小时前
anaconda环境中如何生成requirements
python
【赫兹威客】浩哥7 小时前
【赫兹威客】框架模板-后端bat脚本部署教程
python·django
Cestb0n7 小时前
某果app 加密校验算法逆向分析
python·算法·逆向安全
web守墓人7 小时前
【前端】vue3的指令
前端