# all-source **Repository Path**: xinyi-codeing/all-source ## Basic Information - **Project Name**: all-source - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-05 - **Last Updated**: 2026-05-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 金融评论爬虫 针对小红书、抖音、微博等主流平台,爬取金融、信贷咨询、负债等相关帖子和评论数据。 ## 项目结构 ``` ├── main.py # 主程序入口(CLI) ├── config.py # 全局配置(关键词、平台参数、数据库) ├── models.py # 数据库模型(SQLAlchemy) ├── storage.py # 数据存储 & 导出模块 ├── xiaohongshu_spider.py # 小红书爬虫 ├── douyin_spider.py # 抖音爬虫 ├── weibo_spider.py # 微博爬虫 ├── requirements.txt # 依赖清单 ├── .env.example # 环境变量示例 ├── .env # 本地环境变量(不提交) ├── finance_comments.db # SQLite 数据库(运行后自动生成) └── output/ # 导出文件目录 ``` ## 快速开始 ### 1. 安装依赖 ```bash pip install -r requirements.txt ``` ### 2. 配置环境变量 复制 `.env.example` 为 `.env`,并填入各平台的 Cookie: ```bash cp .env.example .env ``` **如何获取 Cookie:** 1. 在浏览器(Chrome)中打开对应平台并登录 2. 按 F12 打开开发者工具 → Network 标签 3. 刷新页面,找到任意 XHR/Fetch 请求 4. 在请求头 (Request Headers) 中复制 `Cookie` 字段的完整值 5. 填入 `.env` 对应变量 **小红书额外说明:** 小红书 API 请求需要 `x-s` / `x-t` 签名参数(由前端 JS 生成),需从浏览器请求头中一并复制填入。 ### 3. 运行爬虫 ```bash # 爬取全部平台(使用默认关键词) python main.py crawl # 只爬取小红书 python main.py crawl --platform xhs # 只爬取抖音,指定关键词,最多爬 5 页 python main.py crawl --platform douyin --keywords "负债,网贷逾期,信用卡还款" --max-pages 5 # 只爬取微博 python main.py crawl --platform weibo ``` ### 4. 查看统计 ```bash python main.py stats ``` ### 5. 导出数据 ```bash # 导出全部平台数据(CSV + Excel) python main.py export # 只导出小红书数据,仅 CSV 格式 python main.py export --platform xhs --format csv ``` 导出文件保存在 `output/` 目录。 ## 默认关键词 配置文件 `config.py` 中预设了以下金融相关关键词: - 负债、还款、贷款、信贷、欠债、债务、催收 - 网贷、信用卡、逾期、征信、黑名单、花呗、借呗 - 小额贷款、消费贷、抵押贷款、车贷、房贷、助贷 - 债务重组、债务优化、征信修复、停息挂账、债务协商 - 怎么还清、还不起、债务压力、被催收、上征信... ## 数据库 默认使用 SQLite(`finance_comments.db`),无需额外安装。 | 表名 | 说明 | |------|------| | `posts` | 帖子 / 视频信息 | | `comments` | 评论数据(含子评论)| | `crawl_logs` | 爬取任务日志 | 如需切换 MySQL,修改 `.env` 中 `DB_TYPE=mysql` 并配置 `MYSQL_URL`。 ## 企业线索(企查查 / 天眼查) 针对 B 端信贷营销获客场景,从企查查/天眼查批量抓取企业(法人、电话、地址、注册资本、成立日期、行业等)。 ### 1. 配置 Cookie `.env` 中填入: ```bash QCC_COOKIES=... # 企查查登录后的整行 cookie TYC_COOKIES=... # 天眼查登录后的整行 cookie TYC_AUTH_TOKEN=... # 可选,提升通过率 ``` ### 2. 一键执行 ```bash bash run_company.sh # 两个平台都跑 bash run_company.sh --platform qcc # 只跑企查查 bash run_company.sh --platform tyc # 只跑天眼查 bash run_company.sh --no-detail # 只搜列表,不爬详情(更快) bash run_company.sh --keywords "餐饮,装修" # 自定义关键词 bash run_company.sh --from-file companies.txt # 从文件读公司名 ``` ### 3. 命令行细分 ```bash # 关键词搜索 + 爬详情(默认 COMPANY_KEYWORDS 覆盖装修/餐饮/科技/工程等小微高频行业) python main.py crawl-company --platform all # 只爬已入库企业的详情(断点续爬) python main.py company-detail --platform qcc --limit 100 # 导出 Excel(按意向等级 + 行业分 Sheet) python main.py export-company --platform all ``` ### 4. 输出 Excel 结构 `output/companies_<时间>.xlsx` 包含 Sheet: - **全部企业**:完整数据 - **重点_主力客户**:注册资本 100-1000 万 + 成立 2-8 年(信贷转化率最高) - **小微企业**:注册资本 10-500 万 + 成立 1-10 年 - **有电话_可直接联系**:法人/企业电话已抓取 ### 5. 反爬说明 | 平台 | 反爬难度 | 处理方式 | |------|---------|----------| | 企查查 | 高(字体反爬 + 滑块 + 频控) | 自动下载 woff 字体并建立字符映射;触发滑块需手动浏览器登录后更新 Cookie | | 天眼查 | 中(登录态 + 频控) | Cookie 失效更新即可;优先解析 `__NEXT_DATA__` JSON,HTML 兜底 | ### 6. 反封控防护(保护你的付费账号) 针对企查查/天眼查的风控特点,内置 5 道防线: 1. **人类化延迟**:基础随机延迟 + 每批休息 + 每小时大休息 + 偶发长停顿 2. **每日限额**:到量自动停止,保号(状态持久化在 `output/.anti_ban_state.json`) 3. **工作时段**:可选,非工作时段(22:00~9:00)自动等待,模拟人类作息 4. **风控检测**:识别滑块/登录跳转/异常响应,**立即停止整轮任务** 5. **连续失败熔断**:连续 N 次失败自动停止,避免"撞墙" **三种模式**(越安全越慢): | 模式 | 日限(企查查/天眼查) | 请求间隔 | 适用场景 | |------|---------------------|---------|---------| | `safe` **默认** | 200 / 300 | 6-15s | 推荐,不封号 | | `balanced` | 500 / 800 | 3-8s | 有把握+想快点 | | `aggressive` | 1500 / 2500 | 1.5-4s | ⚠️ 临时爆量,容易被封 | **用法**: ```bash # 最安全模式(默认) bash run_company.sh # 平衡模式 + 限制工作时段 bash run_company.sh --balanced --working-hours # 激进模式(风险自担) bash run_company.sh --aggressive # 或通过环境变量控制 ANTI_BAN_MODE=balanced python main.py crawl-company ``` **触发风控时会看到**: ``` [防封][qcc] ⚠️ 检测到风控: 页面关键词: 点击验证 [企查查] ⚠️ 触发风控(...),本轮任务立即停止 ``` 此时: 1. **立即停止当前任务**(已爬的数据已入库,不会丢失) 2. 浏览器登录企查查**手动过一次滑块**(让账号冷静) 3. 从浏览器**重新复制新的 Cookie** 到 `.env` 4. **等 30-60 分钟**再重启任务 5. 如果反复触发,换小号或等 24 小时 **断点续爬**:数据库记录了 `detail_crawled`,下次启动自动跳过已爬条目。 ## 反爬注意事项 | 平台 | 主要挑战 | 建议方案 | |------|----------|----------| | 小红书 | 需要 `x-s` / `x-t` 动态签名 | 从浏览器请求头中复制,定期更新 | | 抖音 | 需要 `X-Bogus` / `msToken` | 从浏览器请求头中复制,可接入签名库 | | 微博 | 需要登录态 Cookie | 登录后复制 Cookie 即可 | **通用建议:** - 合理设置请求间隔(已内置随机延迟 2~6 秒) - 使用代理池(在 `config.py` 中配置 `PROXY_CONFIG`) - Cookie 失效后及时更新 ## 免责声明 本项目仅供学习和研究使用,请遵守各平台用户协议及相关法律法规,勿用于商业用途或大规模抓取。