自动化细胞核分割与特征分析

自动化细胞核分割与特征分析

  • 引言
  • 效果展示
  • HoverNet概述
  • HoverNet原理分析
    • 整体网络框架
    • 实例分割原理
  • HoverNet评估结果
  • 复现过程
  • 细胞核特征应用说明
  • 参考文献
  • 总结
  • 备注
  • 资源获取

本文所涉及所有资源均在传知代码平台可获取

引言

细胞核分割和分类在医学研究和临床诊断中具有重要意义。精准的细胞核分割能够帮助医生更好地识别和分析细胞核的形态学特征,从而辅助疾病诊断、癌症检测以及药物研发。HoverNet是一种基于深度学习的先进网络模型,能够同时执行细胞核分割与分类任务。除了分割和分类,提取细胞核的特征,如面积、半径和形状等,可以进一步分析细胞核的特性,这在肿瘤研究、病理分析等领域具有现实意义。

本文将实现基于Pytorch框架实现HoverNet细胞核的分割和分类,并且基于此自行完成了对细胞核特征提取,用于医学上的相关分析。同时也可以用于计算病理学相关文章的可解释性分析。

本文能够实现从细胞核分割和分类到提取细胞核相关特征全自动化。以及最后分析了提取到的细胞核特征可以有哪些应用(主要是进行了举例说明)。

效果展示

在这里插入图片描述

在这里插入图片描述

HoverNet概述

HoVer-Net是一种精心设计的多分支深度学习网络架构,专为处理复杂的多组织显微图像中的细胞核实例分割与精确分类任务而开发。该网络通过创新的策略,不仅有效解决了细胞核在密集聚集区域难以准确区分的问题,还实现了对每个独立细胞核类型的细致分类。
此外,HoVer-Net还引入了专门的上采样分支,这一设计旨在对每个成功分割出的细胞核实例进行进一步的核类型分类。这一分支利用高级语义信息,结合精心设计的分类策略,能够准确判断每个细胞核的所属类型,为医学研究提供了宝贵的细胞水平信息。

在这里插入图片描述

HoverNet原理分析

整体网络框架

上图中展示了整体的网络框架。HoverNet使用了一个深度神经网络来提取图像中的重要特征。这个网络是基于一个叫做“预激活残差网络”(Preact-ResNet50)的模型,但为了保留更多的细节信息,对这个模型做了一些调整,比如减少了图像缩小的次数。然后,网络通过三个不同的分支来处理图像:

  • 核像素分支(NP分支):判断每个像素是否属于核(细胞核)还是背景。
  • HoVer分支:计算核像素到其中心的水平和垂直距离。这有助于将紧挨在一起的核分开。
  • 核分类分支(NC分支):根据前两个分支的信息,进一步确定每个核的类型。

这样设计整体网络结构能够提高模型性能和效率主要是:

  1. 上采样分支的架构设计
    每个上采样分支都是通过一系列的上采样操作和“密集连接单元”来构建的。你可以把“密集连接单元”想象成一组很小且廉价的计算模块,堆叠多个这样的模块能够使模型获得更大的视野范围(即感受野),并且所需的计算参数更少。这种方式相比直接使用大卷积核的单一操作,更高效地传播梯度,帮助模型更好地训练,如图中Upsample模块。
  2. 跳跃连接与特征融合
    在模型中,通过跳跃连接(类似于在建筑中搭桥梁)将编码器(负责特征提取的部分)中的信息传递到上采样部分。这里,模型使用了“加法”而不是“拼接”的方式来融合这些信息。这种方法特别有助于图像分割任务,因为它能更精确地描绘出物体的边界。
  3. 有效卷积与边界预测
    在上采样过程中,使用了“有效卷积”来确保边界的预测结果不会出现问题。由于这种卷积操作,输出图像的尺寸会比输入图像小一些。
  4. 共享编码器
    与其为每个任务(比如分割和分类)创建单独的网络,不如使用一个共享的编码器(特征提取部分),这样可以同时训练分割和分类任务的模型。这不仅减少了训练时间,还能利用不同任务间的共享信息,提升整体性能。
  5. 根据标签调整模型
    模型可以根据是否有核的分类标签来调整其工作方式。如果没有分类标签,模型只会执行分割任务;如果有分类标签,则会同时进行分割和分类。

这个方法确保不仅能准确分割出每个核,还能正确分类它们的类型。在这里HoVer分支是这篇文章能够取得非常好的重要原因之一。

实例分割原理

HoVer分支分支使用水平和垂直距离来帮助分开紧挨在一起的细胞核,其背后的原理是利用了这些距离信息来识别和分离相邻的核。如下图:
在这里插入图片描述

具体来说,HoVer分支会计算每个核像素到其质心(核的中心点)的水平和垂直距离。这些距离信息有助于在以下几个方面起作用:

识别边界:当两个或多个核紧挨在一起时,常常会导致它们的边界变得模糊,难以区分。通过计算每个像素到质心的水平和垂直距离,可以更清晰地确定哪些像素更接近哪个质心。这有助于识别核的实际边界。

分离相邻核:对于相邻的核,HoVer分支生成的距离图会在这些核的交界处表现出显著的变化。因为每个核的质心不同,越靠近核质心的像素,其水平和垂直距离会变得更小,而靠近核边界的像素,这些距离值会变得不一致或剧烈变化。因此,利用这些距离信息可以有效地分离出紧挨在一起的核。

避免错误合并:传统的分割方法可能会错误地将相邻的核合并成一个整体,而HoVer分支通过分析这些距离,确保每个核都能被正确地分离和识别,而不会被错误地合并。

可以这么通俗的解释:假设你有两个紧挨在一起的圆形气球,每个气球代表一个细胞核。你站在气球的中心点,然后开始测量从你到每个气球表面上不同点的水平和垂直距离。你会发现,越靠近你的位置,这些距离越小,越远的地方距离越大。
如果两个气球挤得很近,两个气球之间的距离会突然发生变化,因为你从一个气球的中心移动到了另一个气球的区域。HoVer分支做的事情就是检测出这些突然变化的地方,并用它来判断这是两个不同的气球(或细胞核),而不是一个大气球(或核)。
所以,通过分析每个像素到其中心的水平和垂直距离,HoVer分支就能确定哪些像素属于哪个细胞核,从而把两个紧挨在一起的细胞核正确地分开,不会把它们混为一谈。

HoverNet评估结果

不同数据集得到的分割和分类结果。
在这里插入图片描述

不同数据集不同模型评估指标对比。
在这里插入图片描述

复现过程

  1. 源码获取
    可以通过这个链接从github上下载:https://github.com/vqdang/hover_net。但是,从这里下载的链接并没有提供模型的预训练权重,需要自己寻找。所以建议可以直接下载我提供的附件。附件如图:
    在这里插入图片描述

那么在这个附件中是有预训练权重的。

2.环境配置

  • 创建环境
conda env create -f environment.yml

利用conda这一开源的、强大的包与环境管理工具,可以方便地设置、运行及更新软件包及其依赖项。为了创建一个新的Python环境,可以执行conda env create命令,并借助-f选项指定一个名为environment.yml的配置文件。这个文件详细列出了新环境所需的所有软件包及其特定版本,从而确保环境的一致性和可重复性。从下图可以看到虽然创建以基本的HoverNet环境,但是没有pytorch。
在这里插入图片描述

所以需要自行在创建的环境中安装一个基于cuda的pytorch。

  • 激活环境
conda activate hovernet
  • 安装pytorch
pip install torch==1.6.0+cu118 torchvision==0.15.1+cu118 torchaudio==1.6.1+cu118 -f https://download.pytorch.org/whl/torch_stable.html

这里pytorch的安装可以参考官网,根据自己的显卡版本安装。

  1. 代码库结构
    下面是这个项目代码库的主要目录和文件的详细解释:

代码库结构在附件中的这个文件夹下:ExtractCellularFeatureFrompng

  • dataloader:包含数据加载器和数据增强流程的代码。数据加载器负责从存储介质中读取数据并将其组织成适合模型训练和推理的格式。
  • models:包含模型定义、主要运行步骤和超参数设置。这是定义神经网络结构、选择损失函数、优化器等核心组件的地方。
  • dataset:主要用户存放输入图像和输出的文件(包括分割后的图片,细胞轮廓等)。
  • run_utils:定义训练/验证循环和回调函数。训练循环是模型学习数据的过程,而回调函数可以在训练过程中的特定时刻执行额外的操作,如保存模型、打印日志等。
  • run_tile.sh:用于进行分割组织病理学图像中的肿瘤区域的patch。
  • run_wis.sh:用于进行分割整个组织病理学图像的细胞。
  • cell_seg_feature.py:提取分割好的细胞核特征脚本。
  • ExtractCellularFeatureFromPng.sh从分割分类到提取特征完整的脚本
  1. 提取的细胞核特征种类
特征种类相关描述
面积,area细胞占据的二维空间大小,是评估细胞大小的基本参数。
边界粗糙度,bbox area描述细胞边缘的不规则程度,可以通过计算边缘上相邻点之间距离的标准差来估算。
凸包面积,convex area能包含细胞所有点的最小凸多边形的面积,用于评估细胞的“外凸”程度。
离心率,eccentricity描述细胞形状相对于圆形的拉长程度,通常定义为细胞主轴与短轴之比。
等效直径,equivalent diameter具有与细胞相同面积的圆的直径,是另一种衡量细胞大小的参数。
欧拉数,euler number拓扑学中的一个概念,对于二维形状,它等于连通区域的数量减去孔洞的数量。在细胞形态学中,可以用来描述细胞内部结构的复杂性。
圆形度,extent也称为圆度或形状因子,是细胞面积与其周长平方之比的四倍π的倒数。它接近1时表示细胞接近圆形。
费雷特,filler area在多个方向上测量的细胞最大和最小宽度,提供了细胞形状在不同方向上的信息。
惯性矩,inertia tensor eigvals x描述细胞形状关于其质心旋转的难易程度,包括主轴惯性矩和次轴惯性矩,可用于进一步分析细胞的取向和形状稳定性。x方向
惯性矩,inertia tensor eigvals y描述细胞形状关于其质心旋转的难易程度,包括主轴惯性矩和次轴惯性矩,可用于进一步分析细胞的取向和形状稳定性。y方向
长轴长度,major axis length细胞形状中最长的直径。
短轴长度,Minor Axis Length细胞形状中最短的直径。
位置,orientation与区域具有相同二阶矩的椭圆的长轴与x轴之间的角度
周长,perimeter围绕细胞边缘的长度,反映了细胞的尺寸和边界的复杂性。
固实度,Solidity细胞面积与其凸包面积之比,反映了细胞边界的凹凸程度。

在细胞生物学和医学成像领域,细胞形态的分析对于理解细胞的生理状态、病理变化以及细胞间的相互作用至关重要。为了精确描述和量化细胞形态,科学家们开发了多种形状描述符(也称为形态学参数)。这些描述符可以捕获细胞形态的关键特征,如大小、形状、边缘复杂度等。以下是15个常用的定量测量的形状描述符的概述,它们被广泛用于评估细胞形态。

提取细胞核特征过程

def CalCellFeature(input_path,output_path):json_path = glob.glob(input_path + "/*.json")for json_file_path in json_path:cell_feature_data = []cell_type_list = []type_prob_list = []cell_centroid_list = []print("running:",json_file_path)G_name = os.path.basename(json_file_path)[:-5]with open(json_file_path, "r") as file:json_data = json.load(file)for key, value in json_data["nuc"].items():contour_data = value["contour"]cell_type = value["type"]type_prob = value["type_prob"]cell_centroid = value["centroid"]cell_type_list.append(cell_type)type_prob_list.append(type_prob)cell_centroid_list.append(cell_centroid)# 计算细胞轮廓图像的尺寸contour_width = max(point[0] for point in contour_data) + 1contour_height = max(point[1] for point in contour_data) + 1# 创建与细胞轮廓contour相同形状的二值图像contour_image = np.zeros((contour_height, contour_width), dtype=np.uint8)for point in contour_data:contour_image[point[1], point[0]] = 1# 使用measure.regionprops函数计算区域属性regions = measure.regionprops(contour_image)# 遍历每个区域
........
  1. 代码执行过程
    进入到ExtractCellularFeatureFrompng文件夹后,执行:
sh ExtractCellularFeatureFrompng.sh

Linux环境下,在Windows中不支持shell,当然也可以自行查看如何在Windows中使用shell。但是这个代码最好在有GPU的环境中运行。

  1. 结果文件
    在这里插入图片描述

图中的input_png是输入图片,可以更改为自己的数据;1:是HoverNet分割产生的结果文件,包括分割图和细胞轮廓。2:是细胞核特征提取产生的结果文件。里面包含了上述表格中的15个特征。产生的分割图和特征如下:
在这里插入图片描述

在这里插入图片描述

细胞核特征应用说明

  1. 首先分析了提取到的面积(area)特征:它是细胞占据的二维空间大小,是评估细胞大小的基本参数。
    将不同
    细胞的种类
    进行分组后得到的比较图如下:

在这里插入图片描述

由图可知,肿瘤细胞在面积上,或者说大小上与其他类型的细胞存在明显差异,(也即是肿瘤细胞更大)。这能够说明虽然单纯的肿瘤细胞面积大小并不能直接确定肿瘤的恶性程度,但通常来说,恶性程度较高的肿瘤细胞往往具有更大的面积和更强的侵袭性
同时了解肿瘤细胞的形态和大小特征有助于医生制定更合适的治疗方案。如果肿瘤细胞面积较大且恶性程度高,可能需要采用更积极的治疗措施(如手术切除、化疗、放疗等)。

  1. 其次分析了提取到的凸包面积在不同类型细胞中的差异:能包含细胞所有点的最小凸多边形的面积,用于评估细胞的“外凸”程度。
    在这里插入图片描述

由图可知肿瘤细胞的凸包面积比其他类型的细胞要大,这说明:肿瘤细胞的增殖活性增强,肿瘤细胞通常具有比正常细胞更快的增殖速度。凸面积的增大可能反映了肿瘤细胞在增殖过程中所占据的更大空间,这是其快速增殖的一个直接表现。细胞扩张快,随着肿瘤细胞的分裂和增殖,它们会不断扩张并占据更多的组织空间,从而导致凸面积的增大。

  1. 接着分析了提取到的等效直径equivalent diameter在不同类型细胞中的差异:具有与细胞相同面积的圆的直径,是另一种衡量细胞大小的参数。
    在这里插入图片描述

很明显肿瘤细胞的该值也是比较大的,等效直径的增大可能是肿瘤细胞异型性的一种表现,反映了它们在生长过程中形态上的显著变化。其中异型性是指它们与正常细胞在形态和结构上的差异程度。

  1. 最后分析了肿瘤细胞和淋巴细胞的数量差异:
    在这里插入图片描述

在该柱状图中,淋巴细胞的数量明显多于肿瘤细胞,这说明:淋巴细胞是免疫系统的重要组成部分,负责识别和清除外来病原体及异常细胞。当体内存在肿瘤细胞时,免疫系统会启动免疫应答,激活淋巴细胞以攻击和清除这些异常细胞。因此,淋巴细胞数量增多可能表明机体的免疫反应正在积极应对肿瘤细胞。

:上述图像1,2,3来自我们运行后产生的test1.csv文件中的数据,图像4来自test2.csv产生的数据。所有图像的画法均来自该网站:https://hiplot.com.cn/cloud-tool/drawing-tool/list

参考文献

  1. Graham S, Vu Q D, Raza S E A, et al. Hover-net: Simultaneous segmentation and classification of nuclei in multi-tissue histology images[J]. Medical image analysis, 2019, 58: 101563.
  2. Lu W, Toss M, Dawood M, et al. SlideGraph+: Whole slide image level graphs to predict HER2 status in breast cancer[J]. Medical Image Analysis, 2022, 80: 102486.

总结

HoverNet不仅提高了分割的精度,还通过多任务学习减少了模型的计算成本。这种高效的设计使HoverNet能够在各种细胞图像数据集上表现出色,特别是在复杂背景下的细胞核识别和分类中,展现出优越的鲁棒性和准确性。

此外,HoverNet的多任务架构允许它同时执行分割和分类操作,这一特点极大地简化了流程,使得在实际应用中能够更快速地获得全面的分析结果。尤其在临床诊断和病理分析中,这种高效的处理方式可以显著缩短分析时间,提升医疗效率。

细胞特征提取方面,通过从分割后的细胞核中提取面积、半径、形状因子等几何特征,能够获得更加精细的细胞核信息。这些特征不仅可以用于肿瘤检测、细胞形态学分析,还能为进一步的生物学研究提供可靠的基础数据。例如,细胞核的面积和形状特征可以用来区分不同类型的癌细胞,帮助医生做出更准确的诊断。

提取这些特征进行了相关应用的演示,可以产生很多图片,不仅可以丰富论文内容,还可以为后续的机器学习统计分析提供更丰富的数据支持,使得研究人员能够在更大范围内探讨细胞形态与疾病之间的关系。这种方法的优势在于,它将复杂的图像处理转化为更易理解和分析的数值数据,降低了进一步研究和应用的门槛。

备注

附件下载完成后,首先看ExtractCellularFeature.md,其次找到ExtractCellularFeatureFromPng.sh这个文件,该文档集成度非常高,只要环境配置没有问题,可以直接实现分割分类和细胞核特征提取。要了解详细过程请参考readme.md。

资源获取

详细复现过程的项目源码、数据和预训练好的模型可从该文章下方附件地址获取。

附件地址:自动化细胞核分割与特征分析

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/5801.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

[ZJCTF 2019]NiZhuanSiWei

[ZJCTF 2019]NiZhuanSiWei 审题 看到可以传入file,text,和password三个参数。 知识点 php伪协议,反序列化 解题 传入text,看到有file_get_content函数,这个函数表示读取$text文件里的值,返回字符串。 所…

Transformer究竟是什么?预训练又指什么?BERT

目录 Transformer究竟是什么? 预训练又指什么? BERT的影响力 Transformer究竟是什么? Transformer是一种基于自注意力机制(Self-Attention Mechanism)的神经网络架构,它最初是为解决机器翻译等序列到序列(Seq2Seq)任务而设计的。与传统的循环神经网络(RNN)或卷…

阿里云对象存储OSS

Alibaba Cloud OSS Alibaba Cloud OSS: 阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。 1.引…

element plus中修改el-table的样式

文章目录 前情提要相关环境package.jsonvue代码结果 方式一直接看代码 方式二直接看代码 前情提要 因为项目中用到el-table的时候,需要将el-table表格的样式进行修改,将整个表格的背景颜色从白色变成透明,使得表格变得透明之后,展…

HTML前端页面设计静态网站

浅浅分享一下前端作业&#xff0c;大佬轻喷~ <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>一个网…

tauri开发中如果取消了默认的菜单项,复制黏贴撤销等功能也就没有了,解决办法

取消默认的菜单项&#xff1a;清除tauri默认的菜单项&#xff0c;让顶部的菜单menu不显示-CSDN博客 就是通过配置空菜单&#xff0c;让菜单不显示&#xff0c;但是这个引发的问题就是复制黏贴撤销等功能也就没有了&#xff0c;解决办法&#xff1a; 新增加编辑下的子菜单&…

02 高效调优:Oracle内存体系的精细化管理实践

文章目录 高效调优&#xff1a;Oracle内存体系的精细化管理实践一、Oracle内存体系的核心组件1.1 系统全局区&#xff08;SGA&#xff09;1.2 程序全局区&#xff08;PGA&#xff09; 二、各组件的交互关系2.1 Buffer Cache与磁盘I/O2.2 Shared Pool与SQL执行2.3 PGA与会话管理…

Qt中的Model与View 3:从样例出发理解QStringListModel和QListView

目录 Ui文件设计如下&#xff1a; 初始化窗口 这里&#xff0c;就是一经典的例子 你可以看到&#xff0c;我们的环境变量是一个经典的List列表&#xff0c;其中承载的就是我们的字符串。我们现在来仿照着搞一个&#xff1a; Ui文件设计如下&#xff1a; 我们下面来逐一演示用…

【简信CRM-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

Python 三维图表绘制指南

Python 三维图表绘制指南 在数据可视化中&#xff0c;三维图表可以更直观地展示数据之间的关系&#xff0c;尤其是当数据具有多个维度时。Python 提供了多个库来绘制三维图表&#xff0c;其中最常用的就是 Matplotlib。本文将介绍如何使用 Matplotlib 绘制三维图表&#xff0c…

粒子群优化双向深度学习!PSO-BiTCN-BiGRU-Attention多输入单输出回归预测

粒子群优化双向深度学习&#xff01;PSO-BiTCN-BiGRU-Attention多输入单输出回归预测 目录 粒子群优化双向深度学习&#xff01;PSO-BiTCN-BiGRU-Attention多输入单输出回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现PSO-BiTCN-BiGRU-Attention粒子…

智能离线语音识别不灵敏?如何改善和提升识别率?

前言 有用户反馈离线语音识别不灵敏&#xff0c;跟着笔者一起分析原因吧。笔者知识能力有限&#xff0c;难免会误&#xff0c;还请大家批评指正。 1 影响离线语音识别的因素 笔者分析离线语音识别不灵敏的原因有以下几点 1.1 运行硬件的算力限制 由于离线语音识别在本地MCU…

7.qsqlquerymodel 与 qtableview使用

目录 qtableview 委托QStyledItemDelegateQAbstractItemDelegateCheckBoxItemDelegate使用qtableview控制列宽&#xff0c;行高&#xff0c;隐藏拖拽行列 qtableview 委托 //设置单元格委托 void setItemDelegate(QAbstractItemDelegate *delegate); QAbstractItemDelegate *it…

加入广告联盟有什么条件吗?

加入广告联盟往往并非是一件轻而易举的事情&#xff0c;而是需要满足一系列特定的条件。这些条件的确会因不同的广告联盟而存在显著的差异&#xff0c;然而&#xff0c;以下所列举的是一些在众多广告联盟中较为常见的加入条件。 首先&#xff0c;内容合规是至关重要的一点。发…

实时计算 Flash – 兼容 Flink 的新一代向量化流计算引擎

摘要&#xff1a;本文整理自阿里云智能集团研究员、开源大数据平台负责人王峰&#xff08;莫问&#xff09;老师在云栖大会的开源大数据专场上的分享。主要有以下几个内容&#xff1a; 1. Apache Flink 已经成为业界流计算事实标准 2. Flash 向量化流计算引擎核心技术解读 3. F…

springboot《计算机网络》在线考试系统-计算机设计毕业源码22248

摘要 计算机网络课程是计算机科学与技术、信息技术及相关专业的一门重要课程。然而&#xff0c;在传统的教育模式下&#xff0c;计算机网络课程的考核方式多以纸质试卷为主&#xff0c;这种方式存在诸多弊端。一方面&#xff0c;试卷的编制、印刷、分发、收缴等环节耗时耗力&am…

【K8S系列】Kubernetes 中 Service 更改未生效的故障排查与解决方案【已解决】

在 Kubernetes 中&#xff0c;Service 是实现 Pod 之间通信的核心组件。当您对 Service 进行更改&#xff08;如修改端口或选择器&#xff09;时&#xff0c;有时可能会发现这些更改未能生效&#xff0c;导致服务无法正常工作。本文将详细描述这一问题&#xff0c;并提供故障排…

【C++】AVL树

&#x1f525;个人主页&#x1f525;&#xff1a;孤寂大仙V &#x1f308;收录专栏&#x1f308;&#xff1a;C从小白到高手 &#x1f339;往期回顾&#x1f339;&#xff1a;【C】STL----map和set &#x1f516; 流水不争&#xff0c;争的是滔滔不息 AVL树通过维护树的平衡来确…

用Puppeteer点击与数据爬取:实现动态网页交互

用Puppeteer与代理IP抓取51job招聘信息&#xff1a;动态网页交互与数据分析 引言 在数据采集领域&#xff0c;传统的静态网页爬虫方式难以应对动态加载的网页内容。动态网页通常依赖JavaScript加载数据&#xff0c;用户需要与页面交互才能触发内容显示。因此&#xff0c;我们…

砥砺十年风雨路,向新而行创新程丨怿星科技十周年庆典回顾

10月24日&#xff0c;是一年中的第256天&#xff0c;也是程序员节&#xff0c;同时也是怿星的生日。2014年到2024年&#xff0c;年华似水匆匆一瞥&#xff0c;多少岁月轻描淡写&#xff0c;怿星人欢聚一堂&#xff0c;共同为怿星科技的十周年庆生&#xff01; 01.回忆往昔&…