2026年如何抓取房地产数据:Zillow、Redfin、Realtor.com 和 Trulia
Source: Dev.to
请提供您希望翻译的完整文本(除代码块和 URL 之外),我将按照要求把它翻译成简体中文并保留原有的格式。
Source: …
概览
房地产数据每天驱动数十亿美元的决策。无论你是在构建投资分析工具、跟踪市场趋势,还是为定价模型提供数据,程序化获取房源列表都是必不可少的。
在本指南中,我将演示如何在 2026 年抓取美国四大房地产平台,内容包括:
- 每个平台提供的数据信息
- 技术挑战
- 可投入生产的实现方案
高价值使用场景
| 用例 | 可以做什么 |
|---|---|
| 投资分析 | 对比不同邮编的每平方英尺价格,跟踪上市天数趋势,识别被低估的房产 |
| 市场研究 | 大规模监测库存水平、新挂牌速度以及降价情况 |
| 竞争情报 | 实时追踪竞争对手的租金定价或翻修利润 |
| 线索生成 | 为外联建立业主自行出售(FSBO)或已失效挂牌的列表 |
| 租金收益模型 | 将成交价与租金估算相结合,计算整个大都市区的资本化率 |
共同点在于:你需要 结构化、实时的、覆盖数千条房源的数据。手动复制粘贴根本无法扩展。
平台比较
| 平台 | 房源数量 | 是否提供 API? | 反机器人难度 | 最佳用途 |
|---|---|---|---|---|
| Zillow | 135 M+ | 仅非官方 | 高 (Incapsula) | Zestimates、价格历史、税务数据 |
| Redfin | 100 M+ | 部分 CSV 导出 | 中等 | 已售数据、经纪人估价 |
| Realtor.com | 100 M+ | 无公开 API | 高 (Akamai) | MLS‑精准房源数据 |
| Trulia | 80 M+ (Zillow‑所有) | 无 | 中高 | 社区洞察、犯罪数据 |
Source: …
Zillow
Zillow 是数据最丰富的来源,但也是防护最严的。一个典型的 Zillow 房源列表包括:
- 地址、价格、卧室/浴室/平方英尺
- Zestimate 与租金 Zestimate
- 价格历史(每次成交、价格变动)
- 税务评估历史
- 附近学校和步行可达性评分
- 市场天数、挂牌经纪人信息
机器人防护: Incapsula(Imperva)采用 JavaScript 挑战、指纹识别和行为分析。直接使用 requests.get() 会被立即拦截。
2026 年可行的方案
- 住宅代理轮换 – 使用看起来像真实用户的 IP。诸如 ThorData 的服务提供住宅代理池,可自动轮换并处理地理定位(这点至关重要,因为 Zillow 会根据位置返回不同数据)。
- 带隐身功能的浏览器自动化 – 使用 Playwright 或 Puppeteer 并配合反检测补丁。随机化视口尺寸、鼠标移动和请求时机。
- 预构建的 Actor – 对于生产工作负载,可使用托管的爬虫 Actor 自动完成代理轮换、CAPTCHA 识别和数据抽取。我维护了一个 Apify 上的 Zillow Scraper,能够提取完整的房源数据,包括价格历史和 Zestimate。
示例:使用 Python 抽取 Zillow 数据
import requests
from bs4 import BeautifulSoup
import json
# Use a proxy service for reliable access
proxies = {
"http": "http://user:pass@proxy.thordata.com:9000",
"https": "http://user:pass@proxy.thordata.com:9000"
}
def scrape_zillow_listing(url):
headers = {
"User-Agent": (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0 Safari/537.36"
),
"Accept-Language": "en-US,en;q=0.9"
}
resp = requests.get(url, headers=headers, proxies=proxies, timeout=30)
soup = BeautifulSoup(resp.text, "html.parser")
# Zillow embeds structured data as JSON‑LD
scripts = soup.find_all("script", type="application/ld+json")
for script in scripts:
data = json.loads(script.string)
if data.get("@type") == "SingleFamilyResidence":
return {
"price": data.get("offers", {}).get("price"),
"address": data.get("address"),
"bedrooms": data.get("numberOfRooms"),
"sqft": data.get("floorSize", {}).get("value")
}
# Example usage
listing_url = "https://www.zillow.com/homedetails/123-Main-St-Anytown-CA-12345/12345678_zpid/"
print(scrape_zillow_listing(listing_url))专业提示: Zillow 的 JSON‑LD 已经包含约 40 % 的有用信息。若要获取 Zestimate 和完整的价格历史,需要解析 __NEXT_DATA__ JSON 块或使用专门的爬取工具。
Redfin
Redfin 在数据提取方面比 Zillow 更友好。它们提供搜索结果的 CSV 下载,并且拥有不那么严格的机器人检测系统。
关键方法
Redfin 的搜索 API(https://www.redfin.com/stingray/api/gis)返回包含房源详情的 JSON。你可以通过编程方式复现搜索请求:
import requests
search_url = "https://www.redfin.com/stingray/api/gis"
params = {
"al": 1,
"region_id": 29470, # 示例地区(旧金山)
"region_type": 6,
"num_homes": 350,
"sf": "1,2,3,5,6,7"
}
resp = requests.get(search_url, params=params)
# The response starts with {}&&& – strip that prefix
json_text = resp.text.lstrip("{}&&&")
data = resp.json()
print(data) # contains price, sold price, HOA, lot size, year built, dates, Redfin Estimate你将获得的内容: 房源价格、成交价格、HOA 费用、土地面积、建造年份、挂牌/成交日期,以及 Redfin 估价。
Realtor.com
Realtor.com 直接从 MLS 数据中获取信息,是活跃房源最准确的来源。他们使用 Akamai 机器人防护。
最佳做法
他们的内部 GraphQL API(https://www.realtor.com/api/v1/hulk)提供结构化的房源数据。你需要:
- 来自首次浏览器访问的 会话 Cookie
- Akamai 传感器数据头(例如
x-akamai-rtb-token) - 住宅代理(ThorData 在这里也表现良好)
数据质量极佳——你可以获取 MLS 编号、挂牌办公室详情以及其他站点未公开的开放日安排。
Trulia
Trulia 归属于 Zillow Group,因此其底层数据和技术栈相似。Trulia 的优势在于 社区数据:犯罪率、通勤时间、噪音水平以及“当地人怎么说”的评论。
Extraction notes
使用与 Zillow 相同的 proxy + stealth‑browser 方法。
值得提取的独特数据点包括:
- 社区安全评分
- 到自定义地点的通勤时间估算
- 带有家长评论的当地学校评分
- 噪音和空气质量指标
Production lessons (all platforms)
- 永远不要使用数据中心代理——它们会在数小时内被封禁。住宅代理(例如 ThorData)是最基本的可行方案。针对 Zillow,您需要美国本土的住宅 IP 并使用粘性会话。
- 更简便的选项:
ScraperAPI将代理轮换和 CAPTCHA 识别合并为一次 API 调用——只需传入目标 URL,即可返回 HTML。 - 合理限速: 将请求间隔 3–8 秒(加抖动)进行分散。速度过快是最常见的错误,会导致立即被封禁。
房地产列表抓取策略
挑战
- 房地产网站会积极追踪请求模式。
- 列表信息不断变化——价格下调、状态更新、新照片。
刷新频率
- 每日 刷新所有活跃列表。
- 每小时 刷新高峰时段(周二至周四上午)。
列表数据库示例模式
{
"source": "zillow",
"zpid": "123456",
"address": "123 Main St, Austin, TX 78701",
"price": 450000,
"zestimate": 465000,
"price_per_sqft": 285,
"days_on_market": 12,
"price_history": [ /* … */ ],
"scraped_at": "2026-03-09T10:00:00Z"
}工具与方法(2026)
- 托管抓取器 – 例如,提供开箱即用的反机器人措施的托管 Zillow 抓取器。
- 自定义流水线 – 将住宅代理与隐身浏览器自动化框架(Playwright、Puppeteer‑Stealth 等)结合使用。
扩展考虑
| 每日列表数量 | 推荐配置 |
|---|---|
| 数百 | 使用旋转代理的细致浏览器自动化。 |
| 数千 | 完整的代理基础设施 + 专用抓取工具(如 Scrapy 集群、Docker/K8s 中的无头浏览器)。 |
获取帮助
正在构建房地产数据流水线?在评论中留下你的使用场景——我很乐意帮助进行架构决策。