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)
相关推荐
java1234_小锋3 分钟前
[免费]基于Python的Django+Vue3在线商城系统(简易版)【论文+源码+SQL脚本】
python·django·商城系统·python毕业设计·在线商城
ray9634 分钟前
Python——for循环和range()函数
python
vibag7 分钟前
Model大模型接口
python·语言模型·langchain·大模型
vibag8 分钟前
提示模板PromptTemplate
python·语言模型·langchain·大模型
XiaoYu20029 分钟前
第3章 Nest.js拦截器
前端·ai编程·nestjs
小北方城市网12 分钟前
第 3 课:前后端全栈联动核心 —— 接口规范 + AJAX + 跨域解决(打通前后端壁垒)
java·大数据·网络·python
千寻girling16 分钟前
面试官 : “ 说一下 Map 和 WeakMap 的区别 ? ”
前端·javascript·面试
2501_9240641121 分钟前
2025年主流Web自动化测试工具功能与适用场景对比
前端·测试工具·自动化
GIOTTO情23 分钟前
舆情监测核心模块实战:从基础采集到智能优化
开发语言·python
可触的未来,发芽的智生27 分钟前
一万个为什么:频率和相位
javascript·人工智能·python·程序人生·自然语言处理