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/9/16 14:02:16 阅读更多 →
ARM Cortex-M定时器与看门狗寄存器级精解:从GPTMTAV到WDTLOAD的实战指南

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

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

2026/9/23 13:47:40 阅读更多 →
记一次懒人在openwrt软路由系统下更改alias,并永久生效的方法

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

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

2026/9/18 21:29:35 阅读更多 →

最新新闻

SAP MM 供应商冻结采购

SAP MM 供应商冻结采购

1、供应商集中冻结标记打上,无法控制下单!3、供应商角色级别一般数据删除,打上集中删除标记就可以控制无法下单,但是要配和消息号ME024进行控制4、其实还可以在采购组织级别控制,但是为了减少对每个组织都去打这个标识…

2026/9/23 16:02:39 阅读更多 →
3个技巧一文搞懂英语四级考试题性能瓶颈

3个技巧一文搞懂英语四级考试题性能瓶颈

3个技巧一文搞懂英语四级考试题性能瓶颈 学会语法却不知怎么搭项目,这是很多开发者卡在瓶颈期的真实写照。你背了单词,读了真题,甚至刷了无数模拟题,但一上手实际业务场景,比如处理高并发下的考试数据解析,代码就慢得像蜗牛。别慌,今天咱们不聊虚的,…

2026/9/23 16:02:39 阅读更多 →
如何学好英语进阶用法

如何学好英语进阶用法

告别报错焦虑:3步搞定英语报错阅读与性能优化 盯着满屏红色的 StackTrace 崩溃吗?别慌,这其实是 性能优化 的入场券。 你被英文报错卡住,往往不是词汇量不够,而是没抓住错误堆栈的底层逻辑。…

2026/9/23 16:02:39 阅读更多 →
量子力学算符运算规则与应用解析

量子力学算符运算规则与应用解析

1. 量子力学中的算符运算规则详解在量子力学的数学框架中,算符扮演着至关重要的角色。它们不仅是描述物理量的数学工具,更是连接量子态与观测结果的桥梁。让我们深入探讨这些运算规则背后的物理意义和数学本质。1.1 算符作用于左矢的厄米共轭规则当我们处…

2026/9/23 16:02:39 阅读更多 →
连续可调稳压电源:LM317闭环、AC-DC多路输出与纹波测量

连续可调稳压电源:LM317闭环、AC-DC多路输出与纹波测量

简介:这是一份输出电压连续可调的稳压电源设计文档,面向硬件设计工程师、电子爱好者与实验室调试人员,用于理解0~30V连续可调稳压电路的设计思路。文档基于CW317(LM317)三端可调稳压器,通过外接…

2026/9/23 16:02:39 阅读更多 →
csgo优化实战速查手册:搞定帧数不稳与卡顿痛点

csgo优化实战速查手册:搞定帧数不稳与卡顿痛点

csgo优化实战速查手册:搞定帧数不稳与卡顿痛点 你复制来的CSGO优化代码跑不通,是不是因为参数没配对,直接导致游戏卡顿甚至闪退?这种“看起来对但就是不动”的bug,比完全报错更让人抓狂。别急,这篇速查手册专门拆解那些让你头疼的底层逻辑,…

2026/9/23 16:01:39 阅读更多 →

日新闻

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析

3招搞定手机怎么下载微信面试难题实战项目解析 面试被问“手机怎么下载微信”背后的原理,90%的人答不上来。别笑,这看似弱智的问题,实则是考察你对移动应用分发机制、安全校验及网络协议理解的试金石。我带过不少校招新人,他们背了八股文,却连一个A…

2026/9/23 0:00:23 阅读更多 →
2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我

2k显示屏性能优化踩坑:版本升级后API全变了,这份源码解析救了我 刚把开发环境的显示器从1080P换到2K,跑老项目直接报错,版本升级后 API…

2026/9/23 0:01:25 阅读更多 →
3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点

3步搞定美眉图实战项目,告别官方文档抓不住重点 官方文档翻了三遍还是云里雾里?别急,美眉图在实战项目中常被用来做数据可视化,但它的原理比你想的简单。今天咱们直接上手,用一个完整的小项目把美眉图跑通,不再死磕那些冗长的理论说明。…

2026/9/23 0:01:25 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/23 4:55:02 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/23 4:49:06 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/23 9:53:41 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/23 9:53:40 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/23 9:53:40 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/23 9:53:40 阅读更多 →