# inspectionCapture
**Repository Path**: zhougewudi/inspection-capture
## Basic Information
- **Project Name**: inspectionCapture
- **Description**: 一个功能强大的企业信息智能采集系统,支持递归抓取企业关系图谱数据
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-08-07
- **Last Updated**: 2026-03-05
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# Inspection Capture
[](LICENSE)
[]()
[]()
[]()
[]()
> 🔍 一个功能强大的企业信息智能采集系统,支持递归抓取企业关系图谱数据
## 📖 项目简介
Inspection Capture 是一款基于 Java 开发的企业信息采集系统,采用 Selenium 浏览器自动化技术,能够从企业信息查询网站(如天眼查)智能采集企业相关数据,包括股东信息、对外投资、主要人员、企业关系图谱等。
系统支持多层级递归抓取,配备完善的缓存机制和数据导出功能,适用于企业尽职调查、市场研究、商业分析等场景。
## ✨ 功能特性
### 🔹 核心功能
| 功能 | 描述 |
|------|------|
| **企业信息采集** | 自动抓取企业名称、统一信用代码、经营状态等基本信息 |
| **股东信息抓取** | 采集股东名单、持股比例、股东类型等详细信息 |
| **对外投资查询** | 抓取企业对外投资情况及投资比例 |
| **主要人员数据** | 采集董事、监事、高级管理人员等关键人员信息 |
| **递归关系抓取** | 支持多层级递归爬取,构建完整企业关系图谱 |
| **验证码自动识别** | 集成 OCR 识别技术,自动处理登录验证码 |
### 🔹 数据处理
- **多数据源支持**:支持 MySQL、SQLite 等多种数据库
- **智能缓存机制**:页面数据本地缓存,避免重复请求
- **Excel 导出**:支持将采集数据导出为 Excel 格式
- **自动分页处理**:自动处理分页数据,确保数据完整性
### 🔹 系统特性
- 配置文件驱动,灵活定制采集参数
- 随机延时机制,模拟真实用户行为
- 完善的日志记录,便于问题排查
- 支持无头模式运行,降低资源消耗
## 🛠 技术栈
```
┌─────────────────────────────────────────────────────────┐
│ 技术架构 │
├─────────────────────────────────────────────────────────┤
│ 🔹 核心语言 │ Java 8+ │
│ 🔹 Web 自动化 │ Selenium 3.141.59 │
│ 🔹 HTML 解析 │ Jsoup │
│ 🔹 数据库 │ SQLite / MySQL │
│ 🔹 数据导出 │ Apache POI │
│ 🔹 OCR 识别 │ Tesseract / DdddOCR │
│ 🔹 日志框架 │ Log4j2 │
│ 🔹 构建工具 │ Maven │
└─────────────────────────────────────────────────────────┘
```
## 🚀 快速开始
### 环境要求
- JDK 8 或更高版本
- Maven 3.6+
- Google Chrome 浏览器
- ChromeDriver(版本需匹配 Chrome 浏览器 需自行对应版本)
### 克隆项目
```bash
git clone https://github.com/pachong-lab/inspection-capture.git
cd inspection-capture
```
### 构建项目
```bash
mvn clean package
```
### 配置说明
编辑 `src/main/resources/config.properties` 文件:
```properties
# 起始页面 URL
url=https://www.tianyancha.com/company/3156711816
# ChromeDriver 路径
driverUrl=C:\\Program Files\\Google\\Chrome\\Application\\chromedriver.exe
# 数据库连接地址
tabDb=jdbc:sqlite:./inspectionCapture.db
# 数据导出路径
fileUrl=C:\\Users\\Downloads\\company_data.xls
# 登录等待时间(毫秒)
logTime=30000
# 数据保存间隔
count=5000
# 递归抓取层级
query=3
# 是否清理历史数据(1=清理,0=保留)
isDel=0
```
### 运行程序
```bash
# 运行企业信息采集
mvn exec:java -Dexec.mainClass="com.pa.InspectionCaptureMain"
# 或运行打包后的 JAR
java -jar target/inspectionCapture-1.0-SNAPSHOT.jar
```
## 📁 项目结构
```
inspectionCapture/
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/pa/
│ │ │ ├── InspectionCaptureMain.java # 主程序入口
│ │ │ ├── CaptchaDownloader.java # 验证码下载器
│ │ │ ├── WordDocumentConverter.java # Word文档转换
│ │ │ ├── db/
│ │ │ │ └── InspectionCaptureTabDb.java # 数据库操作
│ │ │ ├── e/
│ │ │ │ └── Company.java # 企业实体类
│ │ │ └── p/
│ │ │ ├── DdddOcrUtil.java # OCR识别工具
│ │ │ ├── DoctorReviewGenerator.java # 评论生成器
│ │ │ └── GenerateChineseName.java # 姓名生成器
│ │ └── resources/
│ │ ├── config.properties # 主配置文件
│ │ ├── config2.properties # 备用配置
│ │ └── log4j.properties # 日志配置
│ └── test/ # 测试代码
├── yangg/ # 浏览器及依赖
├── pom.xml # Maven 配置
└── README.md # 项目文档
```
## 📊 数据模型
采集的企业数据包含以下字段:
| 字段名 | 说明 |
|--------|------|
| `entityName` | 企业/人员名称 |
| `entityType` | 实体类型 |
| `entityUniscCode` | 统一信用代码 |
| `superEntityName` | 关联上级企业/人员名称 |
| `superEntityType` | 关联类型(法人/股东/高管等) |
| `superEntityUniscCode` | 上级企业统一信用代码 |
| `isShareHolding` | 是否持股 |
| `holdingPercent` | 持股比例 |
| `revoke` | 企业状态(正常/吊销/注销) |
| `tab` | 抓取层级 |
## ⚠️ 使用声明
> **本项目仅供学习研究使用,请勿用于任何商业目的。**
>
> 使用本项目时,请确保:
> 1. 遵守目标网站的 robots.txt 协议
> 2. 遵守相关法律法规
> 3. 合理控制请求频率,避免对目标网站造成负担
> 4. 获取必要的授权和许可
## 🤝 贡献指南
欢迎提交 Issue 和 Pull Request!
1. Fork 本仓库
2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送分支 (`git push origin feature/AmazingFeature`)
5. 开启 Pull Request
## 📝 License
本项目采用 MIT License 开协议 - 详见 [LICENSE](LICENSE) 文件
---
**如果这个项目对你有帮助,欢迎 Star ⭐ 支持!**