一、案例背景与采集目标
二手房信息是最贴近生活、也最适合练「两级抓取」的数据。一条房源的信息通常分成两半:列表页上只有「小区 + 户型 + 面积 + 总价」这些摘要;想看朝向、楼层、建成年代,还得点进详情页。所以这个案例天然就是列表页拿链接、详情页取字段的两级结构。
这一篇的示范站点是 链家 · 广州二手房列表,网址 https://gz.lianjia.com/ershoufang/;它的同源站点贝壳找房 · 广州二手房(https://gz.ke.com/ershoufang/)字段几乎一致,可以对照着看。链家列表页按行政区、板块、面积、价格筛选,公开可访问。
更重要的是,房源数据里藏着一道必做的验证题:页面挂牌的单价,和你自己用「总价 ÷ 面积」算出来的单价,能不能对上?对不上就说明有一处字段采错了、或者口径不一致。这个「算一遍再核对」的动作,是本案例的核心训练。
1.1 这个案例要拿到什么
- 广州某个区域(如「天河区 · 珠江新城」)的二手房房源清单,一条房源一行;
- 标题、小区、区域、户型、建筑面积、朝向、楼层、建成年代;
- 挂牌总价(万元)与挂牌单价(元/㎡);
- 自己用总价 ÷ 面积算出的单价,并与挂牌单价核对;
- 按区域分组对比均价与套数。
1.2 这个案例的难点在哪
| 难点 | 具体表现 | 对策 |
|---|---|---|
| 两级抓取 | 列表页拿不到朝向、楼层、建成年代,必须进详情页 | 先列表拿链接,再逐条进详情页补字段 |
| 面积价格带单位 | 「89.5㎡」「总价 480 万」 | 数值化:面积只留数字,总价统一成万元并注明口径 |
| 单价要靠计算 | 挂牌单价与「总价 ÷ 面积」口径可能不同 | 自己算一遍再与页面值比对,差异超 3% 标记复核 |
| 数据里混着广告位 | 「推荐房源」「猜你喜欢」和真实房源排在一起 | 明确只取搜索结果里的条目,剔除推荐位 |
| 楼层带描述 | 「中楼层/共 18 层」不是纯数字 | 保留原文,另拆出「楼层区间」与「总层数」两列 |
1.3 采集范围与边界
房源信息属于房产平台面向公众公开展示的内容,本案例只采公开的房源字段。有一条线要划清楚:经纪人姓名、联系电话、微信、门店地址等个人信息一律不采。房源本身是商品信息,联系人信息是个人隐私,两者必须区别对待。
目标站点与交付产物
下表是本篇用到的真实站点。绿色是课堂可稳定复现的示范站点;橙色是延伸站点,多数有登录墙或风控,课堂上只讲结构、原理与合规边界,不教绕过。
| 项目 | 内容 |
|---|---|
| 示范站点 | 链家 · 广州二手房列表 https://gz.lianjia.com/ershoufang/ 列表 + 详情两级结构,字段丰富(户型/面积/朝向/楼层/总价/单价) |
| 延伸站点 |
|
| 交付产物 |
|
| 难度 | ★★★ 高 |
| 合规提示 | 只采公开展示的房源信息,严禁采集房东/经纪人电话与姓名;不得用于抢客源等商业竞争用途。 |
二、数据源与字段设计
目标站点:链家 · 广州二手房列表,网址 https://gz.lianjia.com/ershoufang/,以及列表里每条房源的详情页。
| 项目 | 内容 |
|---|---|
站点名称 | 链家(贝壳找房)· 广州二手房 |
入口网址 | https://gz.lianjia.com/ershoufang/(可按行政区 / 板块 / 面积 / 价格筛选,带分页) |
页面形态与接口 | 列表页为服务端渲染的房源卡片,详情页承载完整字段;无登录即可浏览列表,但有风控,需低频访问 |
实际规模 | 广州在售二手房长期保持数万套,单区单板块通常也有上千套,只取需要的几页 |
延伸站点 | 贝壳找房 https://gz.ke.com/ershoufang/(同源体系,字段接近);安居客、房天下可作对照,风控各不相同 |
2.1 完整字段表(13 个字段)
下表就是本案例的验收标准。前 6 个来自列表页,其余来自详情页或由计算派生。
| 字段名 | 字段含义 | 示例值 | 口径与备注 |
|---|---|---|---|
房源标题 | 列表页上的房源标题 | 南北通透精装两居 满五唯一 | 照录原文,含卖点描述 |
详情链接 | 房源详情页完整网址 | https://gz.lianjia.com/ershoufang/108100000001.html | 作为主键,相对地址要补全域名 |
小区 | 小区名称 | 珠江新城某花园 | 关联板块分析的关键字段 |
区域 | 行政区 + 板块 | 天河区·珠江新城 | 统一成「行政区·板块」两段式 |
户型 | 室厅结构 | 2 室 1 厅 | 统一成「X 室 X 厅」,另有「X 室 X 厅 X 卫」的照录式 |
建筑面积 | 建筑面积(平方米) | 89.5 | 只留数字,单位 ㎡;注意是建筑面积还是套内面积 |
朝向 | 主朝向 | 南 | 照录原文;「南北」按多朝向处理 |
楼层 | 所在楼层描述 | 中楼层/共 18 层 | 保留原文,另拆「楼层区间」与「总层数」 |
建成年代 | 竣工年份 | 2012 | 只留年份,用于筛房龄 |
挂牌总价 | 挂牌总价(万元) | 480 | 只留数字;单位万元务必单独标口径 |
挂牌单价 | 页面上的单价(元/㎡) | 53631 | 页面原始值,保留不覆盖 |
计算单价 | 总价 ÷ 面积 所得单价 | 53631 | = 挂牌总价 × 10000 ÷ 建筑面积,保留整数 |
挂牌日期 | 房源上架日期 | 2026-10-06 | 判断房源新鲜度,越新越值得跟进 |
2.2 计算单价与核对(本案例的关键动作)
采完之后,用下面这条口径算一遍单价,再和页面挂牌单价对比:
计算单价(元/㎡) = 挂牌总价(万元) × 10000 ÷ 建筑面积(㎡)
示例:480 万 ÷ 89.5 ㎡ = 53631 元/㎡
与页面挂牌单价 53631 元/㎡ 一致 → 通过
若差异超过 3%,标记出来人工复核
- 常见对不上的原因:面积口径不同(建筑面积 / 套内面积)、总价里含车位或税费、取值时漏了一位数字。
- 核对的价值:这不是为了纠网站的错,而是为了发现自己采集中的错误。单价对不上,多半是你把某条房源的面积或总价采错了。
课程思政|数据安全与法治素养 · 房源是商品,联系人是隐私
把房源的公开展示信息用于课堂分析是一回事,顺手把经纪人的电话、微信抄下来又是另一回事。数据工作者要能分清这两者的界线。个人信息的采集有严格的法律约束,一次「顺手」,可能就踩了线。
AI 助手小贴士|房源字段分散在列表页和详情页两处,容易漏。可以让 AI 先做一张「字段来源对照表」,说明每个字段从哪一级页面取,再开始采集。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请先列一张对照表,说明房源标题、总价、面积、朝向、楼层这些字段分别从列表页还是详情页获取,先不要采集。
三、零代码操作步骤
工具与技能|先看清三个角色,再动手
本篇全程零代码:你把要求说清楚,AI 去执行,你负责验收。三个角色分工如下——浏览器技能指的是腾讯开源的 BrowserSkill,它能让 AI 直接操作你电脑上真实的浏览器(可复用已经登录的状态),自己开一个独立窗口干活,不打扰你正在看的网页;遇到验证码、登录或确认弹窗,它会停下来交给你本人处理。
| 角色 | 负责什么 | 在本案例里具体做什么 |
|---|---|---|
| 你 | 确认字段清单、验收结果、清洗与合规把关 | 盯字段清单、核对结果、处理异常(如验证码) |
| WorkBuddy | 接中文指令:探字段 → 批量采 → 清洗 → 导出交付物 | 拆解本篇的采集任务并跑完全量、产出交付物 |
| 浏览器技能 BrowserSkill | 以真实浏览器打开页面:跑脚本渲染、滚动 / 翻页 / 点开详情、截图留证;可复用本机浏览器已登录状态,遇到验证码或登录弹窗会停下来交给你处理 | 打开二手房列表,再进详情页补字段——两级抓取的关键是先拿链接、再进详情 |
五步操作主线(全课程统一,每一篇都按这个顺序推进):
- 定目标与字段:先看本篇第二节的字段表,把「要哪几列、每列什么口径、要多少条」说清楚——字段清单就是验收标准,说不清就会拿回一张字段乱七八糟的表。
- 现场踩点(浏览器技能 BrowserSkill):打开
https://gz.lianjia.com/ershoufang/,确认列表页有哪些字段、详情页多出哪些字段。 - 小样试采(WorkBuddy):先只采列表页三列(标题、详情链接、挂牌总价),再试 3 条详情页。
- 核对与清洗:① 面积是不是纯数字(有没有混进「㎡」);② 总价是不是万元(有没有混进「万」);③ 用「总价 × 10000 ÷ 面积」算出的单价与挂牌单价差异是否超过 3%。
- 导出与归档:导出交付物(数据明细表 / 可筛选明细页 / 数据看板 / 可复用的技能包),文件名带上采集日期,并写清数据来源、采集时间与已知局限。
用浏览器技能 BrowserSkill 打开 https://gz.lianjia.com/ershoufang/(链家 · 广州二手房列表),把这一页每条记录能采到的字段名和示例值列出来,先不要采集。下面是在 WorkBuddy 里完成本案例的完整流程。两级抓取的关键是先拿链接、再进详情,不要一步到位。
- 新建对话,粘贴提示词,把检索区域换成「天河区 · 珠江新城」,网址用
https://gz.lianjia.com/ershoufang/。 - 第一步:只采列表页。说「先只采列表页的房源标题、详情链接、挂牌总价这三列」。
- 试三条详情页。说「请进入前 3 条详情页,补采小区、户型、建筑面积、朝向、楼层、建成年代」。
- 检查单位与格式。面积是不是纯数字?总价是不是万元?有没有混进「㎡」「万」?
- 算单价并核对。说「新增一列计算单价 = 总价 × 10000 ÷ 面积,并与挂牌单价比对,差异超过 3% 的标红」。
- 放开全部。确认没问题后说「按同样规则采完这一页的全部房源」。
- 按区域分组。说「按区域分组,统计每组的房源套数、平均单价」。
- 导出并归档。说「导出为 Excel,文件名
houses_20261008.xlsx」。
四、提示词模板与追问技巧
下面这段可以直接复制。注意:网址写全、两级抓取分步走、把合规边界交代死。
请帮我采集链家广州二手房列表的房源信息,做一张房源清单表,分两步走。
【目标站点】https://gz.lianjia.com/ershoufang/
这是链家的广州二手房列表页,可按行政区、板块、面积、价格筛选,带分页。
列表页只有摘要,完整字段(朝向、楼层、建成年代)在每条房源的详情页里。
【检索条件】区域:天河区 · 珠江新城;结果第 1 页
【第一步 · 列表页】先采这三列:
1. 房源标题
2. 详情链接(完整网址)
3. 挂牌总价(单位万元,只留数字,如 480)
【第二步 · 详情页】逐条进入详情页,补采:
4. 小区
5. 区域(统一成 行政区·板块,如 天河区·珠江新城)
6. 户型(统一成 X 室 X 厅)
7. 建筑面积(单位 ㎡,只留数字,如 89.5)
8. 朝向
9. 楼层(如 中楼层/共 18 层)
10. 建成年代(只留年份)
11. 挂牌单价(元/㎡,页面上的值)
12. 挂牌日期(详情页上的上架日期)
【计算与核对】
- 新增一列「计算单价」= 挂牌总价 × 10000 ÷ 建筑面积
- 与「挂牌单价」对比,差异超过 3% 的记录单独列出来给我
- 计算单价和挂牌单价都要保留,不要互相覆盖
【合规要求】
- 只采房源公开展示的字段;经纪人姓名、电话、微信、门店地址一律不要采集
- 先只采列表页给我看,我确认后再进详情页
- 严格低频:每条之间间隔 3 秒以上,绝不并发;遇到验证码立即停止并告诉我
- 结果导出为 houses_20261008.xlsx
4.1 三条常用追问指令
追问一(剔除推荐位):
列表里混进了「猜你喜欢」「推荐房源」这些块,
请只保留搜索结果里的真实房源,把推荐位去掉。
追问二(单价对不上):
第 4、9 条的「计算单价」和「挂牌单价」差了 8% 以上,
请重新核对这两条的「建筑面积」和「挂牌总价」是否采错,并把核对过程告诉我。
追问三(分组对比):
请按区域分组,统计每组的房源套数、平均挂牌单价、平均建筑面积,
按平均单价从高到低排序。
AI 助手小贴士|如果页面本身不显示挂牌单价,就别硬要了——直接用总价 ÷ 面积算出来的那列当单价即可,但要在表头或备注里注明「本列为计算值」。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:页面没有挂牌单价,请只用「总价 × 10000 ÷ 面积」算单价,并在表头注明这是计算值,不是页面原始值。
五、结果核对、清洗与保存
采集到的原始结果样例(节选,示例数据,均为真实字段形态):
| 房源标题 | 小区 | 区域 | 户型 | 建筑面积 | 朝向 | 楼层 | 建成年代 | 挂牌总价 | 挂牌单价 | 计算单价 |
|---|---|---|---|---|---|---|---|---|---|---|
| 南北通透精装两居 满五唯一 | 珠江新城某花园 | 天河区·珠江新城 | 2 室 1 厅 | 89.5 | 南 | 中楼层/共 18 层 | 2012 | 480 | 53631 | 53631 |
| 低总价小户型 近地铁 | 车陂某家园 | 天河区·车陂 | 1 室 1 厅 | 45.2 | 东南 | 高楼层/共 11 层 | 2005 | 198 | 43805 | 43805 |
| 电梯三居 采光好 | 天河北某苑 | 天河区·天河北 | 3 室 2 厅 | 128.0 | 南北 | 低楼层/共 25 层 | 2008 | 720 | 56250 | 56250 |
| 老破小 学位房 | 员村某小区 | 天河区·员村 | 2 室 1 厅 | 62.3 | 南 | 中楼层/共 6 层 | 1998 | 395 | 63403 | 63403 |
5.1 四步清洗,一句话一条
① 单位剥离与数值化:
建筑面积只留数字;挂牌总价按万元保留;挂牌单价与计算单价转成数值型。
② 口径统一:
把「2室1厅」「2 室 1 厅」统一成「2 室 1 厅」;
区域统一成「行政区·板块」两段式。
③ 单价核对:
重算「计算单价」= 挂牌总价 × 10000 ÷ 建筑面积,保留整数;
与挂牌单价相比差异超过 3% 的记录单独输出一份核对表。
④ 分组汇总:
按区域分组,输出套数、平均挂牌单价、平均建筑面积、最高与最低总价。
5.2 保存与归档
houses_20261008.xlsx 原始明细表
houses_20261008_clean.xlsx 清洗版(数值化 + 单价核对)
houses_region_20261008.xlsx 区域汇总表(套数、均价、均价排序)
houses_20261008_log.txt 日志:区域、页数、条数、核对差异条数
AI 助手小贴士|核对差异时,别只看差了多少,还要看是「算出来的高」还是「页面标的高」。方向不同,原因往往不同。
打开 WorkBuddy 或任意 AI 对话工具,试试这样问:请把单价差异超过 3% 的记录按「计算值偏高 / 页面值偏高」分成两组,各给我看两条示例。
课程思政|工匠精神与严谨求实 · 算一遍,才知道自己错没错
房源数据里最有用的一步,不是采到多少条,而是拿总价和面积倒推一遍单价、再和页面比对。这一步不做,就发现不了自己把「128.0」采成了「12.8」。严谨不是不信任别人,而是对自己的结果负责。
六、常见问题与合规红线
6.1 这个站点上最容易踩的五个坑
| 现象 | 原因 | 怎么处理 |
|---|---|---|
| 面积出现「89.5㎡」或空的 | 单位没剥离,或该字段在详情页而没进去 | 要求数值化并确认两级页面都采到 |
| 单价普遍对不上 | 面积口径不同(建筑面积 / 套内) | 在备注列注明口径,不以一次差异就判定采集错误 |
| 采到了几十条「推荐房源」 | 推荐位与搜索结果在同一个列表容器里 | 明确要求只取搜索结果条目,剔除推荐位 |
| 同一条房源出现两次 | 列表页有重复卡片 | 按详情链接去重 |
| 采到一半被要求验证码 | 访问频率过高触发了链家风控 | 立即停止,加大间隔或减少页数;必要时换数据源 |
6.2 三条合规红线(每个案例都要过一遍)
- 只采房源公开字段。经纪人姓名、电话、微信、门店地址等个人信息一律不采、不存、不导出。
- 严格控频。房产平台对频率敏感,页数要少、间隔要长,绝不并发轰炸。
- 不用于商业用途。采集结果仅用于课程分析,不转售、不对外发布原始数据。
课程思政|诚信与职业操守 · 不做数据的「二道贩子」
房产数据有很强的商业价值,也正因如此,从业者更要有底线:不把公开数据整理后倒卖、不用采集来的信息去做电话推销、不伪造房源信息误导他人。数据能力越强,越要约束自己的使用方式。
七、随堂自测(10 题)
点击选项即可判分,答错的题会立刻显示解析。
1案例22 为什么必须用「列表页 + 详情页」两级抓取?
- A. 因为列表页打不开
- B. 因为详情页速度更快
- C. 因为朝向、楼层、建成年代等字段只在详情页出现
- D. 因为平台强制要求
2用总价和面积计算单价,正确的算法是?
- A. 挂牌总价(万元)× 10000 ÷ 建筑面积(㎡)
- B. 挂牌总价 ÷ 面积 × 100
- C. 挂牌总价(万元)÷ 面积(㎡)
- D. 面积 ÷ 挂牌总价
3计算出的单价和页面挂牌单价差异很大,最应该先怀疑的是?
- A. 网站标错了价格
- B. 面积或总价有一处采错了
- C. 自己电脑算错了
- D. 这个区域的房价特殊
4链家这类房产平台对访问频率很敏感,正确的采法是?
- A. 一次把全城房源抓完
- B. 缩小区域、拉长间隔、分批采,遇风控立即停
- C. 用多个账号轮换抓
- D. 提高并发尽快采完
5下面哪种字段属于本案例明确不应采集的内容?
- A. 小区名称
- B. 挂牌总价
- C. 经纪人的手机号码
- D. 建筑面积
6「计算单价」和「挂牌单价」两列的保存原则是?
- A. 两列都保留,并保留差值列
- B. 只保留计算单价
- C. 只保留挂牌单价
- D. 把两列合并成一列
7把房源按区域分组统计,最有价值的输出是?
- A. 每组的房源标题
- B. 每套房源的详情链接
- C. 采集时的耗时
- D. 按平均单价排序的区域对比表
8采集到一半平台要求输入验证码,正确的做法是?
- A. 用别的工具绕过验证码
- B. 换个 IP 继续采
- C. 立即停止,加大间隔或换数据源
- D. 手动输入验证码后继续高频采集
9对房源数据去重,最可靠的依据是?
- A. 房源详情链接
- B. 房源标题
- C. 挂牌总价
- D. 建筑面积
10区域汇总表里「平均单价」出现明显异常,最可能的原因是?
- A. 房价真的在一天内变了
- B. 统计口径没变
- C. 浏览器缓存问题
- D. 某个区域混入了大量低价小户型,或面积、总价字段采错