采集说明
采集范围、字段字典、匿名化规则、复现步骤 · 源文件 采集说明.md
全部报告行情综合报告采集报告(得意生活)贴吧采集简报材料采购手册101㎡ 精细预算15–20 万翻新方案避坑与省钱★ 装修设计方案(总纲)客餐厅 + 玄关设计三间卧室设计厨卫 + 阳台设计全屋收纳系统照明设计水电点位设计采集说明
采集说明(deyi_wuhan_zhuangxiu 数据集)
本说明描述数据集
G:\one\reflesh\的采集范围、方法、字段字典、匿名化规则、复现步骤与已知限制。
上次更新时间:2026-09-18(小红书补采 v6 + 四次解析 + v6 剔除记录)
一、交付物清单
| 文件 | 内容 |
|---|---|
deyi_wuhan_zhuangxiu_samples_raw.csv |
152 帖原始样本(标题/摘要/正文长度,匿名化) |
deyi_wuhan_zhuangxiu_samples_standard.csv |
152 帖结构化字段(面积/区域/方式/价格标记) |
deyi_wuhan_zhuangxiu_price_items.csv |
13 条已核验价格条目(11 帖) |
武汉装修行情采集报告_2025-2026.md |
行情结论、缺失率、定性避坑、样本偏差与采数建议 |
武汉101平旧房装修_本地样本与精细预算_2026.md、...xlsx |
上一会话交付的 101㎡ 专项预算(另案,非本数据集) |
wuhan_zhuangxiu_xhs.csv(镜像 deyi_wuhan_zhuangxiu_xhs.csv) |
小红书 93 篇(首轮 40 + v4 补采 32 中的 29 + v5 补采 24 中的 15 + v6 补采 10 中的 9;另有 12 篇捕获异常 + v6 无正文捕获 1 篇剔除) |
wuhan_zhuangxiu_xhs_items.csv |
小红书/公开源分项金额(259 行 / 48 来源;2026-09-16 并入 v5 批 14 来源 87 行,2026-09-18 并入 v6 批 7 来源 63 行) |
research_raw/xhs_parse_v3_summary.json |
三批合并后的字段覆盖率/批次/年份分布 |
research_raw/xhs_capture_failures.json |
12 篇捕获异常剔除清单(含理由、原始 URL) |
武汉装修细节补充_避坑与省钱_2026.md |
对着 101㎡ 旧房的避坑与省钱 |
research_raw/xhs_notes_v4.jsonl |
v4 补采原始页(32 篇) |
research_raw/xhs_notes_v5.jsonl |
v5 补采原始页(24 篇) |
research_raw/xhs_notes_clean.jsonl |
四批合并清洗结果(93 篇:正文/评论/金额/面积/性质) |
research_raw/xhs_item_prices.jsonl |
机器抽取的分项金额(61 条) |
research_raw/xhs_comments.jsonl |
评论抽出(68 篇有评论,其中 64 篇评论 ≥40 字) |
research_raw/public_supplements/ |
土巴兔/搜狐/网易等公开页 |
二、采集范围与时间
- 平台:得意生活(www.deyi.com),板块:装修讨论(f42)、建材/家电市场(fid78)、设计/软装市场(fid936)。
- 样本窗口:发帖日期 2025-01-09 ~ 2026-06-06(限定 2025-01-01 ~ 2026-08-11)。
- 样本量:n=152(2025 年 139、2026 年 13),tid 无重复。
- 剔除记录(不在 152 帖内):
thread-4461171:提示信息页(无效页),无正文。thread-20000238(2024-10-18)、thread-19959909(2024-04-12,迪生装饰促销帖):发帖时间早于 2025-01-01,不在时间窗内。其中 19959909 含促销信息(1688 元抽奖/5000 元抵用券/1.5 折秒杀 18800 元礼包),因日期越界未纳入条目表,仅供定性参考。thread-20034137:经核实为二手房挂牌页(光谷智慧城,已售),非装修帖,已剔除。
三、字段字典
samples_raw.csv(8 列)
| 列 | 说明 |
|---|---|
| tid | 帖子 ID(数字字符串) |
| url | 帖子地址,格式 https://www.deyi.com/thread-<tid>-1-1.html |
| post_date | 发帖日期(YYYY-MM-DD) |
| crawl_date | 采集日期(2026-08-11) |
| source_board | 板块:装修讨论 / 建材/家电市场 / 设计/软装市场 |
| title | 帖子标题(匿名化) |
| summary | 主贴正文摘要(匿名化,正文>942 字时截断?——不截断,为全部主贴文本) |
| body_chars | 主贴正文字符数 |
samples_standard.csv(16 列)
| 列 | 说明 |
|---|---|
| tid,url,post_date,crawl_date,source_board,title | 同 raw |
| area_m2 | 面积(㎡),仅 5 帖披露 |
| layout | 户型(本批 0 帖披露) |
| district | 区域(22 帖披露,如武昌/洪山/青山…) |
| deco_mode | 装修方式:翻新/局部改造/全屋定制/自装(30 帖) |
| deco_style | 装修风格(本批 0 帖披露) |
| price_type | 价格口径:合同/报价、推断、讨论/行情、广告/促销(仅价格帖) |
| total_yuan | 装修总价(元):仅 20036577 = 63000(推断,去年 80㎡ 案例) |
| per_m2_yuan | 每平单价(元/㎡):仅 20036577 = 700(合同/报价,出租房自住标准) |
| has_price_item | 是否含价格条目(0/1),11 帖为 1 |
| note | 备注(本批均为空) |
price_items.csv(9 列)
| 列 | 说明 |
|---|---|
| tid,url,post_date | 同前 |
| item_kind | 条目类型:每平单价 / 面积+总价 / 总价 / 设计费/㎡ / 量房/上门费 / 量房促销 / 促销折扣 / 促销满减 / 促销满赠 / 单次服务价 |
| amount_yuan | 金额(元);无精确数值的条目留空(如"设计费动辄几千一平") |
| unit | 单位:元 / 元/㎡ / 元/次 / 元(满2000减200) 等 |
| item_name | 条目名称(含含/不含说明) |
| quote_type | 口径:合同/报价(商家对业主实际报价)、推断(案例推算)、讨论/行情(用户观察价,非成交)、广告/促销(商家促销,非成交) |
| context | 原文上下文(匿名化),保留原帖关键语句 |
四、口径与统计原则
- 价格条目与装修总价严格分开:
price_items.csv记录所有已核验条目;仅quote_type ∈ {合同/报价, 推断}且item_kind ∈ {面积+总价, 总价}的条目可进入"装修总价"统计。当前满足该条件仅 1 帖(20036577,63000 元),因此不推算全市均价。 - "500 到 2000 一个平方"已识别:tid 20014353(2025-01-09)正文"从 500 一个平方到 2000 一个平方不等"已提取为 2 条每平单价(500/2000 元/㎡,讨论/行情口径),不属于成交价。
- 缺失率口径:缺失率 = 1 − 非空数/152,四舍五入保留 1 位小数;报告已标注 n。
- 广告重复帖去重但不删:全友年中大促 2025-05-30 与 2025-07-09 为重复发帖,两条均保留并互相标注;自流平/货架类同文案广告帖(15+/20+ 条)计入样本总数但无价格条目。
五、匿名化规则(生成时自动执行 + 交付前残留扫描)
- 手机号
1[3-9]\d{9}、座机0\d{2,3}-?\d{7,8}→[电话已隐去] - 邮箱 →
[邮箱已隐去];QQ/V 号(qq|Q|v|V)[::]?\d{5,12}→[联系方式已隐去] - 微信号
(微信|wx|WeChat|WX)[号]?[::]?\w{4,19}→[微信已隐去] - 引用楼"XXX 发表于 YYYY-MM-DD"、"回复 XXX 的帖子" →
[引用](去除昵称) - 门牌号
\d{7,8}(?=栋|幢|号|室|单元)→[门牌已隐去] - 交付前用
validate_deliverables.py第 7 节扫描残留(手机/微信/QQ/邮箱 4 类),当前全部通过。 - CSV 输出为 UTF-8 无 BOM,验证脚本拒绝带 BOM 文件。
六、复现步骤
前置:research_raw/ 中保存了抓取页 HTML 与解析中间件(见下)。完整链路:
1. fetch_threads.ps1 / fetch_pages.py → 抓取列表页与帖子页 (research_raw/*.html)
2. extract_text.py → HTML → 纯文本 (research_raw/*.txt)
3. parse_threads.ps1 → 文本 → threads_parsed.jsonl (155 行, 含 3 条剔除)
4. (人工) extracted.json 构建 → 152 帖结构化 + 字段提取
5. extract_prices.py → 全正文金额/促销/量房线索扫描 → price_candidates.json
6. (人工) 逐条核验候选 → 13 条确认为价格条目
7. patch_items.py → 已核验条目写入 extracted.json[].items
8. make_csv.ps1 → 生成 3 个 CSV(匿名化、UTF-8 无 BOM)
9. validate_deliverables.py → 独立验证(结构/日期/URL/口径/报告数字/匿名化)
关键脚本位于 G:\one\reflesh\research_raw\:make_csv.ps1、extract_prices.py、patch_items.py、validate_deliverables.py。
七、验证结果(2026-08-11 复跑)
验证项: 32 通过 / 0 失败
[OK] raw: 152 行 × 8 列,列数一致
[OK] std: 152 行 × 16 列,列数一致
[OK] itm: 13 行 × 9 列,列数一致
[OK] raw/std: tid 无重复且与 extracted.json 全量一致 (n=152)
[OK] price_items: 13 条条目,tid 均在样本内
[OK] raw/std: 日期全部在 2025-01-01 ~ 2026-08-11
[OK] 年度分布: 2025=139, 2026=13 (合计 152)
[OK] raw/std: URL 格式/一致性通过
[OK] price_items: quote_type 枚举合法(4类)、金额数值域通过
[OK] standard.has_price_item 与 price_items 完全对齐 (11 帖有价格条目)
[OK] 装修总价口径条目: 1 条 (tid=20036577) — 不足 n≥30,不得推算全市均价
[OK] 20036577 两条口径不同,'报价 700元/㎡' 与 '去年案例 63000元' 不混算
[OK] 报告包含 n=152 / 139 / 13 / 13条 / 11帖 / 缺失率 / 500 / 700 / 63,000 / 80 等关键数字
[OK] raw/std/itm: 匿名化残留扫描通过(手机/微信/QQ/邮箱)
八-附-1、小红书补采 v4(2026-08-14)
- 脚本:
research_raw/xhs_collect_v4.py(登录 profile、跳过已采 id、标题打分优先清单/决算/水电/拆除、验证码即停、上限 32 篇) - 二次解析:
research_raw/xhs_parse_v2.py(找回被#截断的正文、抽出评论、标注业主/广告/工长) - 公开页:
research_raw/fetch_public_prices.py→research_raw/public_supplements/(9/9 成功) - 限制同前:不绕过访问控制;Cookie 仅本机 profile;交付物已脱敏。
八-附-2、小红书补采 v5 与三次解析(2026-09-15/16)
- 脚本:
research_raw/xhs_collect_v5.py(关键词补齐小户型/大户型/分区/主材分项/2025 时点共 23 组,上限 24 篇,节奏同 v4;新增捕获校验,见下) - 采集窗口:2026-09-15 23:43 ~ 2026-09-16 00:39,实际新增 24 篇(
xhs_notes_v5.jsonl) - 三次解析:
research_raw/xhs_parse_v3.py(合并 v3 40 + v4 32 + v5 24,note_id 去重;复用 v2 的正文/评论/金额口径) - 修复 1:卡片文本按「倒数第二段」取日期与点赞,兼容「标题自带竖线」(4 段变 5 段)与「缺作者」(3 段)的卡片
- 修复 2:
N天前 / 昨天 / 前天等相对日期按各笔记自己的采集日折算为绝对日期(v5 批 32 条) - 捕获异常剔除(
research_raw/xhs_capture_failures.json,共 11 篇 + 误采 1 篇):
1. 误采推荐词块 1 篇:6a2fadf6000000001702a9ef(页面混入多个作者内容,无法归属)
2. 详情页未打开、正文实为搜索结果/推荐流列表 9 篇:判据为标题之后连续出现 ≥3 组「日期行 + 点赞行」的卡片签名(v5 7 篇 + v4 2 篇)
3. 点错卡片、正文属另一篇笔记 2 篇:🔥110㎡挑战硬装10W…抓到「原木奶油风130平硬装11.6万」,武汉128平半包7w…抓到「武汉124平半包5.8w」;判据为记录标题未出现在捕获页(无法归属) - 结果:清洗后 n=84(v3 40 + v4 29 + v5 15,即三批原始 95 篇剔除 11 篇捕获异常);有正文 71、有评论 64、有金额 53、有面积 57、有区域 20、有方式 52
- 分项并入:
research_raw/append_v5_items.py(幂等)把 v5 批 14 个来源 / 87 行并入wuhan_zhuangxiu_xhs_items.csv(109 → 196 行),帖内分项之和与帖称总额不一致者两行都保留并在备注注明差额 - 复现顺序:
xhs_collect_v5.py→xhs_parse_v3.py→append_v5_items.py;采集脚本已内置同样的捕获校验(列表页 / 标题未出现即跳过),避免 v6 复发 - 独立验证:
research_raw/validate_xhs_deliverables.py(35 项断言全过)——文件齐全、note_id 唯一、批次分布 40/29/15、CSV 表头/行数/镜像字节一致/UTF-8 带 BOM/LF 换行、12 篇剔除记录不在交付内、日期窗口、分项表 196 行 41 来源与金额口径(成交=单一数值,行情/广告=允许「A-B」区间)、匿名化残留按内容字段扫描并含覆盖度自检、报告/说明口径一致性 - 格式约定:小红书链 CSV = UTF-8 带 BOM + LF(
xhs_parse_v3.py/append_v5_items.py写);得意链 CSV = UTF-8 无 BOM + CRLF(make_csv.ps1写);差异已在验证脚本中断言
八-附-3、小红书补采 v6 与四次解析(2026-09-18)
- 脚本:
research_raw/xhs_collect_v6.py(Linux 版;22 组关键词,上限 24 篇) - 三项修复:① 搜索页会间歇性挂死 >90 秒,跳转改
wait_until="commit"+ 重试
(原版等domcontentloaded,且登录自检无重试,整脚本会崩在第一句);
② XHS 改版后详情页正文已无「发布于 / N 点赞」,日期与点赞只在列表卡片里
(标题 | 作者 | 08-21 | 22),改为从卡片取并兼容相对时间(4天前/昨天),
日期窗口过滤才真正生效;③ 点开前先用标题比对历史基线预跳过,省掉重复开页
(实测一个关键词省 10 张卡、约 7 分钟),另加每关键词 8 次尝试上限 - 采集窗口:2026-09-18 09:02 ~ 09:56。中途触发详情页滑块验证(笔记 URL 302 到
/404?source=/404/sec_...,页面提示「当前笔记暂时无法浏览」+「安全验证:拖动箭头完成拼图」),
脚本检测到后立即整批停止(退出码 3);当时搜索页仍正常,属详情级软限流。
不尝试解验证码,与「不绕过访问控制」原则一致 - 结果:原始 10 篇 → 有效 n=9(另 2 篇剔除:
6612630e日期越界 2024-04-07、
6a8852fa无正文捕获),依据见research_raw/xhs_v6_exclusions.json - 分项并入:
research_raw/append_v6_items.py(幂等)把 v6 批 7 个来源 / 63 行并入
wuhan_zhuangxiu_xhs_items.csv(196 → 259 行) - 四次解析:
research_raw/xhs_parse_v6.py(合并 v3 40 + v4 29 + v5 15 + v6 9 = 93 篇;
汇总research_raw/xhs_parse_v6_summary.json) - 新增日期窗口守卫:
post_date < 2025-01-01的记录不入库并记入 v6 剔除清单 - 未新增通用「切不出正文即异常」规则的原因:v3/v4 批次有 13 篇同样切不出正文,
已被历史交付与验证脚本计入(批次分布 40/29/15 有断言),通用规则会静默改变历史口径;
v6 的无正文捕获改由EXCLUDE_IDS定点剔除 - 复现顺序:
xhs_collect_v6.py→xhs_parse_v6.py→append_v6_items.py - 独立验证:
research_raw/validate_xhs_deliverables.py(断言已同步至 v6 口径:
批次分布 40/29/15/9、分项表 259 行 48 来源、v6 批 7 来源、剔除集合 13 篇)
八、已知限制
- 帖子正文可能含图片表格中的价格(未 OCR,如 20036577 附件图),本数据集仅覆盖文字披露。
summary为主贴全文;部分帖子有"回复可见"内容(如隐藏清单),未抓取到。- 得意生活部分板块需登录(得意家 app 已停运,20021980),2026 年样本偏少。
- 价格条目上下文来自主贴与回帖文字,成交价未经合同/发票核验。
- 缺失率高的字段(面积/户型/风格)依赖发帖人主动披露,无法补全。
- 小红书批次新增:详情页捕获存在两类失败(列表页未打开详情、点错卡片导致正文属另一篇),已按判据剔除 11 篇并记录在
xhs_capture_failures.json;被剔除的篇目若需使用,须重新采集。 - 小红书清单类笔记常把明细放在图片里(如 62 平半包 3 万、132 平自装),未 OCR,故金额字段只覆盖文字披露。