{"id":26587499,"url":"https://github.com/laffrex/xiaolanben_crawler","last_synced_at":"2025-03-23T12:20:09.946Z","repository":{"id":283048772,"uuid":"949756939","full_name":"Laffrex/xiaolanben_crawler","owner":"Laffrex","description":"一个高效、稳定的小蓝本网站数据采集工具，可自动提取公司和集团产品、媒体及股东等信息，支持智能处理弹窗和自动化数据分类整理，最终目的是为了方便进行SRC信息收集。","archived":false,"fork":false,"pushed_at":"2025-03-18T09:32:34.000Z","size":125,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-18T10:34:03.952Z","etag":null,"topics":["crawler","pandas","selenium","src"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Laffrex.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-03-17T04:57:10.000Z","updated_at":"2025-03-18T09:32:37.000Z","dependencies_parsed_at":"2025-03-18T10:44:46.200Z","dependency_job_id":null,"html_url":"https://github.com/Laffrex/xiaolanben_crawler","commit_stats":null,"previous_names":["laffrex/xiaolanben_crawler"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Laffrex%2Fxiaolanben_crawler","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Laffrex%2Fxiaolanben_crawler/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Laffrex%2Fxiaolanben_crawler/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Laffrex%2Fxiaolanben_crawler/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Laffrex","download_url":"https://codeload.github.com/Laffrex/xiaolanben_crawler/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245098885,"owners_count":20560490,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["crawler","pandas","selenium","src"],"created_at":"2025-03-23T12:20:09.131Z","updated_at":"2025-03-23T12:20:09.927Z","avatar_url":"https://github.com/Laffrex.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 小蓝本数据采集工具\n\n## 项目说明\n这是一个用于采集小蓝本网站数据的自动化工具，支持采集公司和集团的产品、媒体、网站、股东等相关信息。工具具有自动处理弹窗、智能重试、错误恢复和递归提取功能，提高了数据采集的效率和稳定性。\n\n## 项目结构\n```\nxiaolanben/\n├── auth/                   # 认证相关\n│   └── auth_manager.py     # 登录认证管理\n├── crawler/                # 爬虫模块\n│   ├── base_crawler.py     # 基础爬虫类\n│   ├── crawler_manager.py  # 爬虫管理器\n│   ├── data_extractor.py   # 数据提取器\n│   ├── group/              # 集团数据采集\n│   │   ├── group_crawler.py       # 集团产品爬虫\n│   │   └── shareholder_crawler.py # 集团股东爬虫\n│   ├── company/            # 公司数据采集\n│   │   └── company_crawler.py     # 公司产品爬虫\n│   └── companys_in_group/  # 集团成员数据采集\n│       └── group_members_crawler.py # 集团成员递归爬虫\n├── utils/                  # 工具类\n│   ├── browser_utils.py    # 浏览器工具\n│   └── excel_manager.py    # Excel文件管理工具\n├── main.py                 # 主程序入口\n├── config.json             # 配置文件\n└── README.md               # 项目说明文档\n```\n\n## 环境要求\n- Python 3.8+\n- Chrome浏览器\n- ChromeDriver（与Chrome版本匹配）\n\n## ChromeDriver配置\n首次使用前，请按以下步骤配置ChromeDriver：\n\n1. 查看Chrome版本\n   - 打开Chrome浏览器\n   - 点击右上角三个点\n   - 点击\"帮助\" -\u003e \"关于Google Chrome\"\n   - 记下版本号（例如：115.0.5790.171）\n\n2. 下载ChromeDriver\n   - 访问：https://sites.google.com/chromium.org/driver/\n   - 下载与Chrome版本匹配的chromedriver_win32.zip\n\n3. 配置驱动\n   - 解压下载的zip文件\n   - 将chromedriver.exe放入项目的drivers目录下\n   - 确保文件名为\"chromedriver.exe\"\n\n注意：如果更新了Chrome浏览器，需要重新下载对应版本的ChromeDriver。或者使用`webdriver_manager`库自动安装与浏览器匹配的驱动。\n\n## 依赖安装\n```bash\npip install -r requirements.txt\n```\n\n## 配置文件\n在运行程序前，请先配置 `config.json` 文件：\n```json\n{\n    \"username\": \"您的小蓝本账号\",\n    \"password\": \"您的小蓝本密码\",\n    \"login_url\": \"https://sou.xiaolanben.com/login\"\n}\n```\n\n## 命令行参数说明\n程序支持以下命令行参数：\n\n### 必需参数（二选一）\n- `-g, --group`: 集团页面的URL，例如：`https://sou.xiaolanben.com/group/xxx`\n- `-c, --company`: 公司页面的URL，例如：`https://sou.xiaolanben.com/company/xxx`\n\n### 可选参数\n- `-f, --filename`: 输出Excel文件名（不需要包含.xlsx扩展名）\n- `--all`: 提取所有可用数据（默认选项）\n- `--shareholders`: 仅提取集团股东数据\n- `--products`: 仅提取产品数据（APP、Media、Website）\n- `--recursive`: 递归提取集团成员的公司数据\n- `--members-output`: 集团成员数据输出文件名（不需要包含.xlsx扩展名），默认与集团数据使用相同的文件\n\n### 参数使用示例\n```bash\n# 提取集团所有数据\npython main.py -g https://sou.xiaolanben.com/group/xxx --all\n\n# 提取公司数据并指定输出文件名\npython main.py -c https://sou.xiaolanben.com/company/xxx --all -f custom_name\n\n# 仅提取集团股东数据\npython main.py -g https://sou.xiaolanben.com/group/xxx --shareholders\n\n# 递归提取集团成员数据并指定输出文件名\npython main.py -g https://sou.xiaolanben.com/group/xxx --recursive --members-output custom_members\n\n# 同时提取股东数据和递归提取集团成员数据\npython main.py -g https://sou.xiaolanben.com/group/xxx --shareholders --recursive\n```\n\n## 主要功能\n\n### 采集集团数据\n```bash\npython main.py -g https://sou.xiaolanben.com/group/xxx --all\n```\n这将采集集团的所有数据，包括产品信息和股东信息。\n\n### 采集公司数据\n```bash\npython main.py -c https://sou.xiaolanben.com/company/xxx --all\n```\n这将采集公司的所有产品信息。\n\n### 自定义输出文件\n```bash\npython main.py -g https://sou.xiaolanben.com/group/xxx --all -f custom_name\n```\n这将生成 `custom_name.xlsx` 作为输出文件。\n\n### 选择性采集\n```bash\n# 仅采集股东数据\npython main.py -g https://sou.xiaolanben.com/group/xxx --shareholders\n\n# 仅采集产品数据\npython main.py -g https://sou.xiaolanben.com/group/xxx --products\n```\n\n### 递归提取集团成员数据\n```bash\npython main.py -g https://sou.xiaolanben.com/group/xxx --recursive\n```\n这将遍历集团的所有成员，并对每个成员公司进行数据采集。递归提取的数据会存储在一个单独的Excel文件中：\n- 如果使用默认文件名，数据会存储在`xiaolanben_group_recursive.xlsx`\n- 如果使用自定义文件名（例如`custom_name.xlsx`），数据会存储在`custom_name_recursive.xlsx`\n- 如果指定了`--members-output`，则使用指定的文件名\n\n## 已实现功能\n1. **认证管理**\n   - 通过配置文件加载用户名和密码\n   - 自动登录小蓝本网站\n   - 登录状态检查和维护\n\n2. **集团数据采集**\n   - 集团产品信息采集（APP、媒体、网站）\n   - 集团股东信息采集（集团成员、对外投资、投资方）\n   - 数据自动分类并保存到Excel文件\n\n3. **公司数据采集**\n   - 公司产品信息采集（APP、媒体、网站）\n   - 数据自动分类并保存到Excel文件\n\n4. **递归数据采集**\n   - 递归提取集团成员的公司数据\n   - 支持自定义输出文件\n   - 智能文件命名和处理\n\n5. **数据提取与处理**\n   - 支持多种数据类型的提取\n   - 数据自动保存到Excel的不同工作表\n   - 支持追加模式和合并现有数据\n   - 智能处理\"查看更多\"弹窗\n   - 自动滚动加载更多内容\n   - 高效的数据去重机制\n\n6. **资源管理**\n   - 自动垃圾回收\n   - 优化内存使用\n   - 更高效的资源释放\n\n7. **错误处理与重试机制**\n   - 自动重试失败的操作（最多3次）\n   - 异常处理和错误日志\n   - 智能弹窗关闭策略（点击弹窗外部、ESC键、页面刷新）\n   - 优雅的错误恢复机制\n\n8. **Excel文件管理**\n   - 集中式Excel文件管理\n   - 智能表格初始化和验证\n   - 文件锁定机制避免并发访问冲突\n\n## 输出文件说明\n程序会在运行目录下生成Excel文件，包含以下工作表：\n\n### 集团数据文件\n1. **APP**：包含APP名称和链接\n2. **Website**：包含网站名称和链接\n3. **微信公众号**：包含公众号名称和链接\n4. **微信小程序**：包含小程序名称和链接\n5. **其他媒体**：包含其他媒体平台名称和链接\n6. **集团成员**：包含成员名称和链接\n7. **对外投资**：包含被投资方名称和链接\n8. **投资方**：包含投资方名称和链接\n\n### 公司数据文件\n1. **APP**：包含APP名称和链接\n2. **Website**：包含网站名称和链接\n3. **微信公众号**：包含公众号名称和链接\n4. **微信小程序**：包含小程序名称和链接\n5. **其他媒体**：包含其他媒体平台名称和链接\n\n### 递归提取的集团成员数据文件\n1. **APP**：包含成员公司APP名称和链接\n2. **Website**：包含成员公司网站名称和链接\n3. **微信公众号**：包含成员公司公众号名称和链接\n4. **微信小程序**：包含成员公司小程序名称和链接\n5. **其他媒体**：包含成员公司其他媒体平台名称和链接\n\n## 注意事项\n1. 确保运行前已正确配置账号密码\n2. 每个标签页的内容会自动判断是否为空，空内容会跳过处理\n3. 程序包含自动重试机制，最多重试3次\n4. 数据保存时会自动处理文件已存在的情况，合并新旧数据并去重\n5. 请合理使用，避免频繁请求导致账号被限制\n6. 程序会自动处理\"查看更多\"弹窗，无需手动干预\n7. 如遇到弹窗关闭失败，程序会自动尝试多种关闭方式\n8. 递归提取可能耗时较长，请耐心等待\n9. 使用`--recursive`参数时，数据会保存到单独的文件中\n\n## 错误处理\n1. 登录失效：程序会提示重新登录\n2. 网络超时：自动重试机制\n3. 内容为空：跳过处理并继续执行\n4. 弹窗关闭失败：多种关闭方式尝试（点击弹窗外部、ESC键、页面刷新）\n5. 数据提取失败：自动跳过并继续处理其他数据\n6. 页面加载超时：自动刷新并重试\n7. 内存管理：定期释放资源并执行垃圾回收\n\n## 最近更新\n1. 添加了递归提取集团成员数据功能\n2. 优化了弹窗关闭机制，现在通过点击弹窗外部区域关闭\n3. 改进了数据提取器，支持不同页面结构的智能适配\n4. 增强了Excel文件管理，集中处理文件操作\n5. 优化了资源管理，减少内存占用\n6. 统一了控制台输出格式，提高可读性\n7. 支持自定义递归数据输出文件名\n\n## 维护者\n[Laffrex]\n\n## 许可证\nMIT License \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaffrex%2Fxiaolanben_crawler","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flaffrex%2Fxiaolanben_crawler","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flaffrex%2Fxiaolanben_crawler/lists"}