OpenCode 流览器控制实现企业批量信息提取(Selenium 复用 Chrome 登录态)
一、前言做尽调、股权穿透、企业背景分析时经常需要批量导出目标公司全部自然人股东再逐一抓取每位股东名下所有任职企业。手动点开几十上百个股东页面效率极低本文分享一套基于 SeleniumChrome 调试端口复用登录态的自动化采集方案完整实现公司搜索→股东信息提取→股东个人页跳转→全页任职企业翻页抓取→结构化 JSON 输出同时梳理整套方案存在的缺陷与全套优化改进思路。适用场景批量股权尽调、自然人关联企业筛查、投融资背景核查 技术栈Python3 Selenium Chrome CDP 远程调试 DOM 解析二、整体功能概述核心能力复用本地已登录天眼查的 Chrome 会话无需代码账号密码登录规避登录风控自动搜索目标企业定位企业主页解析股东表格提取股东姓名、持股比例、股东个人主页链接遍历每个自然人股东页面切换「所有任职企业」标签循环翻页抓取全部任职公司数据自动去重输出结构化 JSON 文件 可读文本文件。以上部分的能力可根据需要进行调整可修改为实际关注的信息。整体执行流程plaintext手动启动带调试端口Chrome(保留登录态) → Selenium挂载现有Chrome实例 → 搜索目标公司并进入企业主页 → 切换股东信息Tab解析全部股东DOM数据 → 循环每一位股东跳转股东个人主页 → 切换「所有任职企业」Tab → 循环翻页采集每页企业名称自动去重 → 汇总所有股东对应任职企业落地文件三、前置环境依赖1. 软件依赖Chrome 浏览器已手动登录天眼查账号Python32. Python 依赖包bash 运行pip install selenium webdriver-manager3. 环境启动要求通过 Chrome 远程调试端口9222暴露会话Selenium 挂接复用 Cookie避免重复登录、验证码拦截。四、完整实现步骤详解4.1 复用已登录 ChromeCDP 远程调试方案方案原理不新建独立 Chrome 用户数据目录会引发 DevTools 端口冲突报错分两步手动启动带调试端口 Chrome脚本连接现有浏览器实例直接复用登录 Cookie。1手动启动 Chrome 命令bash 运行chrome.exe --remote-debugging-port9222 --user-data-dirC:\Users\xxx\User Data--remote-debugging-port9222开放调试端口--user-data-dir读取本机 Chrome 默认用户数据保存登录信息2Selenium 连接现有浏览器代码片段python 运行from selenium.webdriver import Chrome, Options options Options() # 绑定本地调试端口 options.add_experimental_option(debuggerAddress, 127.0.0.1:9222) driver Chrome(optionsoptions)4.2 搜索企业并进入公司主页直接拼接搜索 URL规避输入框点击、输入不稳定问题自动抓取第一条匹配企业链接python 运行import urllib.parse company_name 目标企业名称 # 企业名称URL编码避免中文、特殊符号失效 search_url fhttps://www.tianyancha.com/search?key{urllib.parse.quote(company_name)} driver.get(search_url) # 抓取页面第一个 /company/ 链接进入企业主页规则天眼查搜索结果首位一般为目标主体多匹配时默认取第一条。4.3 DOM 解析股东信息稳定表格遍历方案放弃 XPath / 固定 CSS 选择器采用全局 DOM 扫描向上回溯定位表格适配页面改版全局检索包含文本「股东信息」的 DOM 节点向上递归父节点找到最近table股东表格遍历表格tr行跳过表头每行提取第 2 列a文本股东姓名第 3 列文本持股比例a标签 href股东个人页链接/human/{id}。核心优势页面局部样式改动时不会直接导致解析失效。4.4 抓取股东全部任职企业含自动翻页跳转股东个人/human/{id}页面点击「所有任职企业」Tab 切换数据视图特征匹配任职企业主表格表头同时包含「职位」「企业名称」单页数据≥10 条DOM 末尾最后一张匹配表格为目标数据表逐行提取第二列企业链接内文本JS 分页逻辑循环翻页从表格向上遍历 DOM 找到分页容器.table-footer匹配当前页码 1 的分页按钮并点击重复抓取直到无下一页采集过程使用列表判断去重避免跨页重复企业。4.5 数据输出采集完成后生成两类文件test_result.json结构化机器可读数据包含公司、股东、持股、任职企业数组readable_result.txt纯文本格式化内容方便快速查看。4.6 脚本启动命令bash 运行# 提前手动启动9222端口Chrome后执行 python tianyancha_bot.py五、现有方案已知缺陷 对应临时解决办法表格问题现象产生原因当前应对方案单元格文本附带多余数字、标签前缀页面 DOM 结构自带序号前缀优先提取a标签文本不取整段单元格文本翻页后数据完全不变重复抓取同一页页面存在多套分页控件误点无关分页通过 DOM 父子关系精准绑定当前数据表对应的分页栏部分股东无个人主页链接无法抓取任职企业股东、无实名自然人仅展示名称跳过该股东日志标记无链接页面存在多张带「职位」表头表格法人、高管、股东多模块视图共用相似表格结构筛选行数≥10、DOM 靠后的表格作为主任职表六、整套方案待优化改进点6.1 浏览器连接层优化端口硬编码问题当前固定 9222 端口多脚本运行、端口占用直接崩溃优化自动探测空闲端口支持配置文件自定义端口增加端口占用重试逻辑。依赖人工启动 Chrome无法后台定时、自动化部署优化双模式切换 —— 本地复用登录态人工启动/ 无头独立 Chrome 自动登录服务器批量采集封装一键启动 Chrome 脚本。缺少元素等待机制无显式等待异步渲染 DOM 空白、元素找不到高频报错优化全局封装WebDriverWait显式等待区分 DOM 加载、接口异步数据、Loading 遮罩三种等待场景。用户数据路径硬编码换电脑、多用户直接失效优化自动读取系统默认 Chrome 用户目录支持配置自定义路径增加路径不存在异常捕获。6.2 企业搜索逻辑优化仅取第一条结果容错差重名公司、分支机构、注销主体无法区分优化支持统一社会信用代码精准搜索多条结果输出候选列表可按成立时间筛选目标企业增加无结果捕获逻辑。URL 未编码企业名称含括号、特殊符号搜索失效增加urllib.parse.quote编码处理。6.3 股东信息解析模块优化全局document.querySelectorAll(*)遍历所有 DOM页面元素量大时性能极差缩小检索范围至页面主体容器替换全局扫描为精准 CSS 选择器。未兼容股东表格懒加载首屏外股东无法抓取增加页面滚动逻辑循环滑动到底部触发全部股东渲染。采集字段不全、异常容错弱仅抓取姓名、持股、链接优化补充股东类型、认缴实缴、持股状态单条股东解析失败单独捕获不中断整体任务无链接股东分类标记存储不丢弃。6.4 任职企业抓取核心流程优化Tab 点击无加载等待切换标签后接口异步返回直接抓取会拿到旧空白数据点击后等待表格行数 0、Loading 消失再解析。表格识别逻辑存在边界 Bug任职企业不足 10 条时匹配失效采用「表头关键词 父容器 Class 分页绑定」三重特征定位表格不再依赖行数判断。JS 手写翻页逻辑维护成本高、改版易失效提供两种方案Selenium 原生分页点击 / 直接抓 XHR 接口传 page 分页速度提升数倍增加下一页置灰判断终止循环校验翻页后数据是否更新防止重复抓取。仅简单文本去重企业名称变体无法合并新增企业名称标准化清洗去除分公司、地域后缀、特殊符号支持企业 ID 精准去重区分存续 / 注销企业分开存储。6.5 反爬、稳定性与容错优化无任何风控规避策略高频抓取触发滑块验证码、IP 封禁、登录失效优化页面跳转、翻页、切换股东增加随机延时自动识别验证码、登录过期弹窗并告警大批量采集支持代理 IP 轮换。无完整日志、无断点续爬单条数据崩溃直接全量重跑搭建分级日志时间、企业、股东、错误信息落地数据持久化下次启动自动跳过已采集主体。缺少资源回收脚本异常退出残留大量 Chrome 进程占用内存finally块统一执行driver.quit()关闭浏览器。6.6 工程化 输出能力升级仅支持单次单企业采集无批量功能支持读取 Excel/CSV 批量企业清单循环采集新增 Excel 输出分 Sheet股东总表、任职企业明细表JSON 增加抓取时间、来源企业元数据。全部参数硬编码修改繁琐抽离 YAML/JSON 配置文件统一管理端口、等待时长、输出路径、代理开关等参数。6.7 性能大幅提升方案接口直抓替代 DOM 渲染采集当前方案完整加载页面广告、图片、无关组件资源损耗大抓前端 XHR 请求直接获取接口 JSON跳过页面渲染效率提升数倍。并发采集多股东任职抓取可控多线程并行降低串行等待耗时。拦截无用资源Chrome 启动屏蔽图片、视频、广告加载缩短页面加载时间。6.8 代码架构可维护性优化现有代码全流程耦合在单脚本复用、修改成本高分层模块化拆分浏览器封装模块、搜索模块、股东解析模块、任职抓取模块、数据清洗输出模块通用工具函数封装等待元素、分页、日志、文件读写、企业名称清洗页面 Class、关键词、URL 全部定义常量网站改版仅修改常量无需全量改代码。6.9 边界场景补充兼容自然人无任何任职企业空数组标记避免程序报错企业法人股东单独分支跳转企业详情页抓取对外投资不进入自然人/human页面区分当前股东 / 历史退出股东分开存储自动关闭会员弹窗、广告遮罩避免按钮被遮挡无法点击。七、总结本文提供的基于 Chrome CDP 调试端口复用登录态的天眼查采集方案解决了登录难、重复登录触发风控的痛点完整覆盖「企业 - 股东 - 股东任职企业」全链路数据采集需求。 但原生实现存在性能、容错、批量、反爬、可维护性多方面短板文中配套完整优化方案可按需改造少量企业人工尽调原生方案可直接使用大批量、自动化定时采集建议采用接口直抓、批量导入、断点续爬、代理 IP、模块化重构优化后的版本。补充说明本方案仅用于企业合法尽调、自有业务数据整理禁止用于批量爬虫商用、恶意数据爬取天眼查存在访问频率限制批量采集务必增加随机延时避免账号封禁网站前端 DOM、接口不定期改版若解析失效可根据文中「常量抽离」思路快速适配页面变更。

相关新闻

【毕业设计】基于 Django 的电商交易平台及其数据安全机制实现(源码+文档+远程调试,全bao定制等)

【毕业设计】基于 Django 的电商交易平台及其数据安全机制实现(源码+文档+远程调试,全bao定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/10/15 10:39:22 阅读更多 →
ARM Cortex-M定时器与看门狗寄存器级精解:从GPTMTAV到WDTLOAD的实战指南

ARM Cortex-M定时器与看门狗寄存器级精解:从GPTMTAV到WDTLOAD的实战指南

1. 项目概述与核心价值在嵌入式开发领域,尤其是基于ARM Cortex-M内核的微控制器项目里,通用定时器(GPTM)和看门狗定时器(WDT)是两个你必须打交道的核心外设。它们一个负责精准的“时间管理”,另…

2026/10/14 11:58:10 阅读更多 →
记一次懒人在openwrt软路由系统下更改alias,并永久生效的方法

记一次懒人在openwrt软路由系统下更改alias,并永久生效的方法

由于Esxi openwrt-lede软路由系统不稳定,每次开机都得用xshell连接openwrt-lede软路由系统,并敲下reboot让软路由系统重启,网络才能正常使用,如果更新软路由固件又会导致一些软件功能不可用,故只能硬着头皮每天敲下reboot&#xf…

2026/10/8 12:08:28 阅读更多 →

最新新闻

SpringBoot+Vue医院预约挂号系统设计与优化

SpringBoot+Vue医院预约挂号系统设计与优化

1. 项目概述:现代化医疗预约解决方案这个基于SpringBootVue的医院预约挂号系统,是我去年为某三甲医院信息化改造设计的核心模块。传统医疗机构的预约挂号流程普遍存在页面卡顿、数据不同步、操作繁琐等问题,而采用前后端分离架构后&#xff0…

2026/10/15 10:39:41 阅读更多 →
微信小游戏是什么?运行原理与开发入门全解析

微信小游戏是什么?运行原理与开发入门全解析

做前端时间长了,总有人问我:微信小游戏到底是个什么东西?能像网页一样不用下载就玩,又能做出挺复杂的游戏,还能在朋友圈里被疯转。说实话,我一开始也绕了不少弯路,总觉得它像小程序,…

2026/10/15 10:39:41 阅读更多 →
超帧在SLAM中的作用:从关键帧组织到局部优化的全面解析

超帧在SLAM中的作用:从关键帧组织到局部优化的全面解析

1. 为什么我会盯上 Hyperframes 这个概念做了这么多年SLAM相关的工作,我逐渐意识到一个残酷的事实:绝大多数做视觉SLAM的人,对关键帧的认知停留在“选一帧长得不一样的图”这个层面,更别说超帧(Hyperframes&#xff09…

2026/10/15 10:39:41 阅读更多 →
D-S证据理论:用不确定性推理解决急诊分诊与医疗AI评估难题

D-S证据理论:用不确定性推理解决急诊分诊与医疗AI评估难题

急诊分诊这件事,表面上是个分诊护士按个红黄绿标签的过程,实际上是个高压、高噪声、高代价的决策现场。病患到急诊的那一刻,能采集到的信息往往是零散的:病人自己的口述、家属慌张的补充、监护仪上跳动的几个数字、既往病历里一段…

2026/10/15 10:39:41 阅读更多 →
superpowers安装全攻略:从环境准备到排错重装的一条龙实操

superpowers安装全攻略:从环境准备到排错重装的一条龙实操

“superpowers”这个词最近在我几个技术交流群里出现的频率高得离谱,不少人在问“想要安装superpowers”,还有人把它列进新机器必备清单。我最初以为是什么夸张的营销宣传,直到自己在全新的机器上完整走了一遍安装、配置、排错的全流程&#…

2026/10/15 10:39:41 阅读更多 →
学Simulink——储能变流器(PCS)中 PWM 整流器的恒流充放电(CC Charge / CC Discharge)仿真

学Simulink——储能变流器(PCS)中 PWM 整流器的恒流充放电(CC Charge / CC Discharge)仿真

目录 手把手教你学Simulink——储能变流器(PCS)中 PWM 整流器的恒流充放电(CC Charge / CC Discharge)仿真 一、为什么储能 PCS 要做 恒流(CC)充放电双向 PWM 整流器 二、PCS 双向控制与 CC 模式原理** 2.1 功率平衡估算(用于 idref​折算) 2.2 模式定义 三、关键…

2026/10/15 10:38:32 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →