2026年如何抓取房地产数据:Zillow、Redfin、Realtor.com 和 Trulia

发布: (2026年3月26日 GMT+8 20:22)
9 分钟阅读
原文: Dev.to

Source: Dev.to

请提供您希望翻译的完整文本(除代码块和 URL 之外),我将按照要求把它翻译成简体中文并保留原有的格式。

Source:

概览

房地产数据每天驱动数十亿美元的决策。无论你是在构建投资分析工具、跟踪市场趋势,还是为定价模型提供数据,程序化获取房源列表都是必不可少的。

在本指南中,我将演示如何在 2026 年抓取美国四大房地产平台,内容包括:

  • 每个平台提供的数据信息
  • 技术挑战
  • 可投入生产的实现方案

高价值使用场景

用例可以做什么
投资分析对比不同邮编的每平方英尺价格,跟踪上市天数趋势,识别被低估的房产
市场研究大规模监测库存水平、新挂牌速度以及降价情况
竞争情报实时追踪竞争对手的租金定价或翻修利润
线索生成为外联建立业主自行出售(FSBO)或已失效挂牌的列表
租金收益模型将成交价与租金估算相结合,计算整个大都市区的资本化率

共同点在于:你需要 结构化、实时的、覆盖数千条房源的数据。手动复制粘贴根本无法扩展。

平台比较

平台房源数量是否提供 API?反机器人难度最佳用途
Zillow135 M+仅非官方高 (Incapsula)Zestimates、价格历史、税务数据
Redfin100 M+部分 CSV 导出中等已售数据、经纪人估价
Realtor.com100 M+无公开 API高 (Akamai)MLS‑精准房源数据
Trulia80 M+ (Zillow‑所有)中高社区洞察、犯罪数据

Source:

Zillow

Zillow 是数据最丰富的来源,但也是防护最严的。一个典型的 Zillow 房源列表包括:

  • 地址、价格、卧室/浴室/平方英尺
  • Zestimate 与租金 Zestimate
  • 价格历史(每次成交、价格变动)
  • 税务评估历史
  • 附近学校和步行可达性评分
  • 市场天数、挂牌经纪人信息

机器人防护: Incapsula(Imperva)采用 JavaScript 挑战、指纹识别和行为分析。直接使用 requests.get() 会被立即拦截。

2026 年可行的方案

  1. 住宅代理轮换 – 使用看起来像真实用户的 IP。诸如 ThorData 的服务提供住宅代理池,可自动轮换并处理地理定位(这点至关重要,因为 Zillow 会根据位置返回不同数据)。
  2. 带隐身功能的浏览器自动化 – 使用 Playwright 或 Puppeteer 并配合反检测补丁。随机化视口尺寸、鼠标移动和请求时机。
  3. 预构建的 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)提供结构化的房源数据。你需要:

  1. 来自首次浏览器访问的 会话 Cookie
  2. Akamai 传感器数据头(例如 x-akamai-rtb-token
  3. 住宅代理(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 中的无头浏览器)。

获取帮助

正在构建房地产数据流水线?在评论中留下你的使用场景——我很乐意帮助进行架构决策。

0 浏览
Back to Blog

相关文章

阅读更多 »

用小工具解决 venv 头疼问题?

Python 虚拟环境的问题:Python 的虚拟环境非常棒——但直到你真的尝试使用它们时才会发现问题。每个项目都有自己的 .venv,但……