如何爬取 Century 21:房地产技术指南

爬取 Century 21 以获取房源挂牌、价格和经纪人数据。掌握大规模的 CloudFront 绕过、住宅代理和自动化提取技术。

覆盖率:GlobalUnited StatesCanadaEuropeAsia-PacificLatin America
可用数据10 字段
标题价格位置描述图片卖家信息联系信息发布日期分类属性
所有可提取字段
房产标题挂牌价格街道地址城市州/省邮政编码卧室数量浴室数量总平方英尺占地面积(英亩)房产类型建筑年份MLS 编号挂牌经纪人姓名经纪公司名称地理坐标(经纬度)房产描述室内/室外特征图片 URL
技术要求
需要JavaScript
无需登录
有分页
有官方API
检测到反机器人保护
CloudFrontAWS WAFTLS FingerprintingIP BlockingRate Limiting

检测到反机器人保护

CloudFront
AWS WAF
浏览器指纹
通过浏览器特征识别机器人:canvas、WebGL、字体、插件。需要伪装或真实浏览器配置文件。
IP封锁
封锁已知的数据中心IP和标记地址。需要住宅或移动代理才能有效绕过。
速率限制
限制每个IP/会话在一段时间内的请求数。可通过轮换代理、请求延迟和分布式抓取绕过。

关于Century 21

了解Century 21提供什么以及可以提取哪些有价值的数据。

全球房地产巨头

Century 21 Real Estate LLC 是一家美国房地产经纪加盟公司,也是 Anywhere Real Estate Inc.(原 Realogy)的子公司。它是行业内公认度最高的品牌之一,汇集了数十个国家的数百万条住宅、商业和豪华房源。该平台作为买家和卖家的标准化门户,提供每处房产的深度技术数据。

高价值房源数据

该网站包含海量的结构化房产信息。对于数据爱好者,它提供了 MLS 编号、历史价格点、特定的房产属性(如平方英尺和建筑年份)以及经纪人的直接联系详情。这些数据对于构建房地产应用、获客数据库和市场情报工具具有极高价值。

为什么要爬取 Century 21?

爬取该网站可以进行大规模的对比市场分析,而这在手动操作下是不可能完成的。通过提取全球房源数据,用户可以追踪国际迁移趋势,监测高增长市场的价格波动,并在低估的投资机会进入主流视线前将其识别。

关于Century 21

为什么要抓取Century 21?

了解从Century 21提取数据的商业价值和用例。

实时监控本地和全球市场的房产价格波动。

识别用于房屋翻新或租赁组合的低估投资机会。

为抵押贷款经纪人、保险代理人和搬家公司生成高质量线索。

汇总历史房产数据,用于训练评估和估值的 AI model。

对经纪公司绩效和区域市场份额趋势进行竞争分析。

抓取挑战

抓取Century 21时可能遇到的技术挑战。

由 CloudFront 机器人保护层引起的严厉 403 Forbidden 错误。

需要完整 JavaScript 执行才能可见数据的动态内容渲染。

能够检测标准无头浏览器特征的高级浏览器指纹识别。

严格的速率限制,必须使用优质住宅代理网络。

使用AI抓取Century 21

无需编码。通过AI驱动的自动化在几分钟内提取数据。

工作原理

1

描述您的需求

告诉AI您想从Century 21提取什么数据。只需用自然语言输入 — 无需编码或选择器。

2

AI提取数据

我们的人工智能浏览Century 21,处理动态内容,精确提取您要求的数据。

3

获取您的数据

接收干净、结构化的数据,可导出为CSV、JSON,或直接发送到您的应用和工作流程。

为什么使用AI进行抓取

自动处理住宅代理切换,防止基于 IP 的黑名单限制。
模拟类人浏览行为,绕过 CloudFront 和 WAF 检测。
内置 JavaScript 渲染,无需编写复杂的 Selenium 或 Playwright 代码。
计划执行功能,可实现一致的每日或每周房产数据更新。
无需信用卡提供免费套餐无需设置

AI让您无需编写代码即可轻松抓取Century 21。我们的AI驱动平台利用人工智能理解您想要什么数据 — 只需用自然语言描述,AI就会自动提取。

How to scrape with AI:
  1. 描述您的需求: 告诉AI您想从Century 21提取什么数据。只需用自然语言输入 — 无需编码或选择器。
  2. AI提取数据: 我们的人工智能浏览Century 21,处理动态内容,精确提取您要求的数据。
  3. 获取您的数据: 接收干净、结构化的数据,可导出为CSV、JSON,或直接发送到您的应用和工作流程。
Why use AI for scraping:
  • 自动处理住宅代理切换,防止基于 IP 的黑名单限制。
  • 模拟类人浏览行为,绕过 CloudFront 和 WAF 检测。
  • 内置 JavaScript 渲染,无需编写复杂的 Selenium 或 Playwright 代码。
  • 计划执行功能,可实现一致的每日或每周房产数据更新。

Century 21的无代码网页抓取工具

AI驱动抓取的点击式替代方案

Browse.ai、Octoparse、Axiom和ParseHub等多种无代码工具可以帮助您在不编写代码的情况下抓取Century 21。这些工具通常使用可视化界面来选择数据,但可能在处理复杂的动态内容或反爬虫措施时遇到困难。

无代码工具的典型工作流程

1
安装浏览器扩展或在平台注册
2
导航到目标网站并打开工具
3
通过点击选择要提取的数据元素
4
为每个数据字段配置CSS选择器
5
设置分页规则以抓取多个页面
6
处理验证码(通常需要手动解决)
7
配置自动运行的计划
8
将数据导出为CSV、JSON或通过API连接

常见挑战

学习曲线

理解选择器和提取逻辑需要时间

选择器失效

网站更改可能会破坏整个工作流程

动态内容问题

JavaScript密集型网站需要复杂的解决方案

验证码限制

大多数工具需要手动处理验证码

IP封锁

过于频繁的抓取可能导致IP被封

Century 21的无代码网页抓取工具

Browse.ai、Octoparse、Axiom和ParseHub等多种无代码工具可以帮助您在不编写代码的情况下抓取Century 21。这些工具通常使用可视化界面来选择数据,但可能在处理复杂的动态内容或反爬虫措施时遇到困难。

无代码工具的典型工作流程
  1. 安装浏览器扩展或在平台注册
  2. 导航到目标网站并打开工具
  3. 通过点击选择要提取的数据元素
  4. 为每个数据字段配置CSS选择器
  5. 设置分页规则以抓取多个页面
  6. 处理验证码(通常需要手动解决)
  7. 配置自动运行的计划
  8. 将数据导出为CSV、JSON或通过API连接
常见挑战
  • 学习曲线: 理解选择器和提取逻辑需要时间
  • 选择器失效: 网站更改可能会破坏整个工作流程
  • 动态内容问题: JavaScript密集型网站需要复杂的解决方案
  • 验证码限制: 大多数工具需要手动处理验证码
  • IP封锁: 过于频繁的抓取可能导致IP被封

代码示例

import requests
from bs4 import BeautifulSoup

# 必须使用自定义请求头以绕过基础的 AWS WAF 检查
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'https://www.century21.com/'
}

def scrape_c21(url):
    try:
        # 如果没有高质量代理,Requests 通常会以 403 失败
        response = requests.get(url, headers=headers, timeout=15)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            # 选择器针对常见的房源卡片元素
            listings = soup.select('.property-card')
            for item in listings:
                price = item.select_one('.property-card-price').get_text(strip=True)
                addr = item.select_one('.property-address').get_text(strip=True)
                print(f'Price: {price} | Address: {addr}')
        else:
            print(f'Blocked: {response.status_code}')
    except Exception as e:
        print(f'Error: {e}')

scrape_c21('https://www.century21.com/real-estate/new-york-ny/LCNYNEWYORK/')

使用场景

最适合JavaScript较少的静态HTML页面。非常适合博客、新闻网站和简单的电商产品页面。

优势

  • 执行速度最快(无浏览器开销)
  • 资源消耗最低
  • 易于使用asyncio并行化
  • 非常适合API和静态页面

局限性

  • 无法执行JavaScript
  • 在SPA和动态内容上会失败
  • 可能难以应对复杂的反爬虫系统

如何用代码抓取Century 21

Python + Requests
import requests
from bs4 import BeautifulSoup

# 必须使用自定义请求头以绕过基础的 AWS WAF 检查
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36',
    'Accept-Language': 'en-US,en;q=0.9',
    'Referer': 'https://www.century21.com/'
}

def scrape_c21(url):
    try:
        # 如果没有高质量代理,Requests 通常会以 403 失败
        response = requests.get(url, headers=headers, timeout=15)
        if response.status_code == 200:
            soup = BeautifulSoup(response.text, 'html.parser')
            # 选择器针对常见的房源卡片元素
            listings = soup.select('.property-card')
            for item in listings:
                price = item.select_one('.property-card-price').get_text(strip=True)
                addr = item.select_one('.property-address').get_text(strip=True)
                print(f'Price: {price} | Address: {addr}')
        else:
            print(f'Blocked: {response.status_code}')
    except Exception as e:
        print(f'Error: {e}')

scrape_c21('https://www.century21.com/real-estate/new-york-ny/LCNYNEWYORK/')
Python + Playwright
from playwright.sync_api import sync_playwright

def scrape_with_playwright():
    with sync_playwright() as p:
        # 建议使用隐身模式参数启动
        browser = p.chromium.launch(headless=True)
        context = browser.new_context(user_agent='Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)')
        page = context.new_page()
        
        # 导航到搜索结果页面
        page.goto('https://www.century21.com/real-estate/los-angeles-ca/LCCALOSANGELES/')
        
        # 等待通过 JavaScript 加载的房产网格
        page.wait_for_selector('.property-card')
        
        cards = page.query_selector_all('.property-card')
        for card in cards:
            price = card.query_selector('.property-card-price').inner_text()
            address = card.query_selector('.property-address').inner_text()
            print({'price': price, 'address': address})
            
        browser.close()

scrape_with_playwright()
Python + Scrapy
import scrapy

class Century21Spider(scrapy.Spider):
    name = 'c21_spider'
    start_urls = ['https://www.century21.com/real-estate/miami-fl/LCCFMIAMI/']

    def parse(self, response):
        # 使用 CSS 选择器遍历房源容器
        for listing in response.css('.property-card'):
            yield {
                'address': listing.css('.property-address::text').get().strip(),
                'price': listing.css('.property-card-price::text').get().strip(),
                'url': response.urljoin(listing.css('a.card-anchor::attr(href)').get())
            }
        
        # 跟随分页栏中的下一页链接
        next_page = response.css('a.next-page::attr(href)').get()
        if next_page:
            yield response.follow(next_page, self.parse)
Node.js + Puppeteer
const puppeteer = require('puppeteer');

async function scrapeCentury21() {
  const browser = await puppeteer.launch({ headless: true });
  const page = await browser.newPage();
  
  // 设置真实的视口大小
  await page.setViewport({ width: 1280, height: 800 });
  
  await page.goto('https://www.century21.com/real-estate/chicago-il/LCCICHICAGO/');
  
  // 等待 React 组件渲染房源
  await page.waitForSelector('.property-card');
  
  const properties = await page.evaluate(() => {
    return Array.from(document.querySelectorAll('.property-card')).map(el => ({
      price: el.querySelector('.property-card-price')?.innerText,
      address: el.querySelector('.property-address')?.innerText,
      beds: el.querySelector('.property-beds')?.innerText
    }));
  });
  
  console.log(properties);
  await browser.close();
}

scrapeCentury21();

您可以用Century 21数据做什么

探索Century 21数据的实际应用和洞察。

对比市场分析

房地产公司可以监控当地竞争对手的房源,以确保自己的库存定价相对于市场平均水平具有准确性。

如何实现:

  1. 1提取特定邮政编码的价格和平方英尺数据。
  2. 2计算活跃房源的平均每平方英尺价格。
  3. 3为经纪人生成自动报告,以调整挂牌价格。

使用Automatio从Century 21提取数据,无需编写代码即可构建这些应用。

您可以用Century 21数据做什么

  • 对比市场分析

    房地产公司可以监控当地竞争对手的房源,以确保自己的库存定价相对于市场平均水平具有准确性。

    1. 提取特定邮政编码的价格和平方英尺数据。
    2. 计算活跃房源的平均每平方英尺价格。
    3. 为经纪人生成自动报告,以调整挂牌价格。
  • 投资者线索获取

    房产投资者可以通过将当前价格与社区历史中位数进行比较,识别出“急售”或定价偏低的房源。

    1. 每 24 小时爬取目标城市的所有新房源。
    2. 筛选近期大幅降价的房产。
    3. 将房源与公共税务记录进行交叉比对,评估投资可行性。
  • 抵押贷款获客

    贷款机构可以识别新房源,针对潜在借款人提供量身定制的融资或再融资方案。

    1. 监控特定高价值地区的“新房源”板块。
    2. 提取房产位置和预估贷款需求。
    3. 将数据导入 CRM,直接接触潜在购房者。
  • AI 估值训练

    数据科学家利用提取的房源属性来训练 machine learning model,以实现自动化房产评估。

    1. 汇总 10,000 条以上的房源,包括建筑年份和配套设施等属性。
    2. 清理并规范化数据集,删除重复或过时的条目。
    3. 训练一个回归 model,根据房产特征预测销售价格。
  • 经纪公司绩效追踪

    营销公司可以通过计算每个机构的活跃房源数量,追踪哪些经纪公司正在获得最多的市场份额。

    1. 从所有结果中爬取挂牌经纪人和经纪公司名称。
    2. 按办公处对房源进行分组,计算总库存量。
    3. 可视化 6 个月内的市场份额增长或下降情况。
不仅仅是提示词

用以下方式提升您的工作流程 AI自动化

Automatio结合AI代理、网页自动化和智能集成的力量,帮助您在更短的时间内完成更多工作。

AI代理
网页自动化
智能工作流

抓取Century 21的专业技巧

成功从Century 21提取数据的专家建议。

务必使用动态住宅代理;Century 21 的 CloudFront 防火墙会严厉封锁数据中心 IP 段。

在请求之间实施 5-15 秒的随机睡眠定时器,以避免触发基于行为的速率限制。

如果需要高产量的房源数据,请使用官方的 Anywhere Developers Portal,这是最稳定的数据源。

针对网站的 XML 站点地图索引进行爬取,以查找直接的房产 URL,从而绕过复杂的搜索页面分页。

定期监控 HTML 结构;房地产网站经常在季节性的平台更新期间更改 CSS 类名。

相关 Web Scraping

关于Century 21的常见问题

查找关于Century 21的常见问题答案