0

0

Zillow价格历史数据爬取失败的常见原因与解决方案

霞舞

霞舞

发布时间:2026-02-02 16:25:02

|

632人浏览过

|

来源于php中文网

原创

Zillow价格历史数据爬取失败的常见原因与解决方案

zillow页面采用动态渲染和混淆类名,直接使用requests+beautifulsoup无法获取价格历史等js生成内容,需改用selenium或解析zillow api响应,同时避免依赖不稳定css类名。

Zillow 是一个高度反爬的房产平台:其价格历史、估值、房源详情等内容均由 JavaScript 动态注入,原始 HTML 响应中几乎不包含目标数据。你遇到的 AttributeError: 'NoneType' object has no attribute 'find' 根本原因并非选择器写错,而是 soup.find(...) 返回 None —— 因为 price_history_section 对应的

在服务器返回的静态 HTML 中根本不存在。

❌ 为什么你的代码会失败?

  • requests.get(url) 仅获取初始 HTML(无 JS 执行),而 Zillow 的价格历史表格由 React 渲染,DOM 节点在加载后才生成;
  • 类名如 hdp__sc-1j01zad-0 hGwlRq 是 Webpack 自动哈希生成的动态类名,每次部署都可能变化,不可靠;
  • 浏览器开发者工具看到的 DOM 是 JS 执行后的结果,而 BeautifulSoup 解析的是原始响应体,二者内容不一致。

✅ 可行的替代方案

方案一:使用 Selenium(推荐初学者)

通过真实浏览器加载并等待动态内容就绪:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.chrome.options import Options

url = "https://www.zillow.com/homedetails/407-N-9th-St-Las-Vegas-NV-89101/7014811_zpid/"

chrome_options = Options()
chrome_options.add_argument("--headless")  # 无界面运行
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")

driver = webdriver.Chrome(options=chrome_options)
wait = WebDriverWait(driver, 15)

try:
    driver.get(url)
    # 等待价格历史区域出现(更鲁棒:用文本或 aria-label 定位)
    price_hist_heading = wait.until(
        EC.presence_of_element_located((By.XPATH, "//h3[contains(text(), 'Price history')]"))
    )
    # 向上找最近的 section 容器(比依赖 class 更稳定)
    section = price_hist_heading.find_element(By.XPATH, "./ancestor::section[1]")

    # 提取所有价格历史行(tr)
    rows = section.find_elements(By.TAG_NAME, "tr")
    for row in rows[1:]:  # 跳过表头
        cells = row.find_elements(By.TAG_NAME, "td")
        if len(cells) >= 2:
            date = cells[0].text.strip()
            price = cells[1].text.strip()
            print(f"{date}: {price}")

except Exception as e:
    print("未找到价格历史数据或超时:", e)
finally:
    driver.quit()
✅ 优势:模拟真实用户行为,兼容绝大多数动态内容; ⚠️ 注意:需安装 ChromeDriver,注意 Zillow 的反自动化检测(可添加 user-agent 和随机延迟缓解)。

方案二:逆向 Zillow API(高效但需维护)

Zillow 前端实际调用内部 GraphQL 或 REST API 获取数据。例如,价格历史通常来自:

https://api.broker-api.zillow.com/v2.0.0/property/{zpid}/priceHistory

或通过抓包发现类似请求(F12 → Network → Filter price)。构造带合法 cookie 和 x-csrf-token 的请求可直接获取 JSON 数据。

自由画布
自由画布

百度文库和百度网盘联合开发的AI创作工具类智能体

下载

? 风险提示:API 端点、鉴权方式易变,需定期更新;违反 robots.txt 和 ToS 可能导致 IP 封禁。

? 重要提醒(法律与技术双维度)

  • 遵守 robots.txt:Zillow 的 https://www.zillow.com/robots.txt 明确禁止爬取 /homedetails/ 路径;
  • 尊重服务条款:Zillow ToS 第 4.2 条禁止“自动访问或收集数据”;
  • 技术替代建议:优先使用官方 Zillow API(需申请,有配额限制),或选用合规数据服务商(如 ATTOM、CoreLogic)。

✅ 总结

不要依赖动态类名或静态 HTML 解析 Zillow;优先选用 Selenium + 显式等待 + 语义化定位(如 //h3[contains(.,'Price history')]);生产环境务必加入错误重试、User-Agent 轮换、请求间隔,并评估法律合规性。对于批量需求,强烈建议转向授权数据源——稳定、合法、可持续。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python GraphQL API 开发实战
Python GraphQL API 开发实战

本专题系统讲解 Python 在 GraphQL API 开发中的实际应用,涵盖 GraphQL 基础概念、Schema 设计、Query 与 Mutation 实现、权限控制、分页与性能优化,以及与现有 REST 服务和数据库的整合方式。通过完整示例,帮助学习者掌握 使用 Python 构建高扩展性、前后端协作友好的 GraphQL 接口服务,适用于中大型应用与复杂数据查询场景。

18

2026.01.21

json数据格式
json数据格式

JSON是一种轻量级的数据交换格式。本专题为大家带来json数据格式相关文章,帮助大家解决问题。

424

2023.08.07

json是什么
json是什么

JSON是一种轻量级的数据交换格式,具有简洁、易读、跨平台和语言的特点,JSON数据是通过键值对的方式进行组织,其中键是字符串,值可以是字符串、数值、布尔值、数组、对象或者null,在Web开发、数据交换和配置文件等方面得到广泛应用。本专题为大家提供json相关的文章、下载、课程内容,供大家免费下载体验。

537

2023.08.23

jquery怎么操作json
jquery怎么操作json

操作的方法有:1、“$.parseJSON(jsonString)”2、“$.getJSON(url, data, success)”;3、“$.each(obj, callback)”;4、“$.ajax()”。更多jquery怎么操作json的详细内容,可以访问本专题下面的文章。

313

2023.10.13

go语言处理json数据方法
go语言处理json数据方法

本专题整合了go语言中处理json数据方法,阅读专题下面的文章了解更多详细内容。

78

2025.09.10

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

293

2023.11.13

cookie
cookie

Cookie 是一种在用户计算机上存储小型文本文件的技术,用于在用户与网站进行交互时收集和存储有关用户的信息。当用户访问一个网站时,网站会将一个包含特定信息的 Cookie 文件发送到用户的浏览器,浏览器会将该 Cookie 存储在用户的计算机上。之后,当用户再次访问该网站时,浏览器会向服务器发送 Cookie,服务器可以根据 Cookie 中的信息来识别用户、跟踪用户行为等。

6433

2023.06.30

document.cookie获取不到怎么解决
document.cookie获取不到怎么解决

document.cookie获取不到的解决办法:1、浏览器的隐私设置;2、Same-origin policy;3、HTTPOnly Cookie;4、JavaScript代码错误;5、Cookie不存在或过期等等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

349

2023.11.23

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

45

2026.02.02

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.8万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

CSS教程
CSS教程

共754课时 | 26.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号