武汉装修行情数据站得意生活 · 小红书 · 贴吧 采集数据

采集说明

采集范围、字段字典、匿名化规则、复现步骤 · 源文件 采集说明.md

采集说明(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 原文上下文(匿名化),保留原帖关键语句

四、口径与统计原则

  1. 价格条目与装修总价严格分开price_items.csv 记录所有已核验条目;仅 quote_type ∈ {合同/报价, 推断}item_kind ∈ {面积+总价, 总价} 的条目可进入"装修总价"统计。当前满足该条件仅 1 帖(20036577,63000 元),因此不推算全市均价
  2. "500 到 2000 一个平方"已识别:tid 20014353(2025-01-09)正文"从 500 一个平方到 2000 一个平方不等"已提取为 2 条每平单价(500/2000 元/㎡,讨论/行情口径),不属于成交价。
  3. 缺失率口径:缺失率 = 1 − 非空数/152,四舍五入保留 1 位小数;报告已标注 n。
  4. 广告重复帖去重但不删:全友年中大促 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.ps1extract_prices.pypatch_items.pyvalidate_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.pyresearch_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.pyxhs_parse_v3.pyappend_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.pyxhs_parse_v6.pyappend_v6_items.py
  • 独立验证:research_raw/validate_xhs_deliverables.py(断言已同步至 v6 口径:
    批次分布 40/29/15/9、分项表 259 行 48 来源、v6 批 7 来源、剔除集合 13 篇)

八、已知限制

  1. 帖子正文可能含图片表格中的价格(未 OCR,如 20036577 附件图),本数据集仅覆盖文字披露。
  2. summary 为主贴全文;部分帖子有"回复可见"内容(如隐藏清单),未抓取到。
  3. 得意生活部分板块需登录(得意家 app 已停运,20021980),2026 年样本偏少。
  4. 价格条目上下文来自主贴与回帖文字,成交价未经合同/发票核验。
  5. 缺失率高的字段(面积/户型/风格)依赖发帖人主动披露,无法补全。
  6. 小红书批次新增:详情页捕获存在两类失败(列表页未打开详情、点错卡片导致正文属另一篇),已按判据剔除 11 篇并记录在 xhs_capture_failures.json;被剔除的篇目若需使用,须重新采集。
  7. 小红书清单类笔记常把明细放在图片里(如 62 平半包 3 万、132 平自装),未 OCR,故金额字段只覆盖文字披露。