You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用BeautifulSoup爬取Zillow房产数据遇JSON解析错误求助

解决Zillow API请求JSON解析失败的问题

核心问题分析

你遇到的JSONDecodeError: Expecting value: line 1 column 1,本质是请求返回的内容并非有效JSON——大概率是被Zillow的反爬机制拦截,返回了空内容、HTML验证码页面或错误提示,而非预期的接口数据。

具体解决方案

1. 补全浏览器级请求头

Zillow会校验请求的来源标识,缺失关键请求头会直接拦截爬虫请求。必须添加模拟真实浏览器的请求头:

import requests
import json

# 模拟Chrome浏览器的请求头
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": "application/json, text/plain, */*",
    "Referer": "https://www.zillow.com/daytona-beach-fl-32119/"
}

# 替换为你捕获的API端点URL
api_url = "你的Zillow API请求地址"
response = requests.get(api_url, headers=headers)

# 先打印返回内容,确认是否为有效JSON
print(response.text)

# 再尝试解析
try:
    property_data = json.loads(response.text)
    # 处理房产数据,比如提取列表
    properties = property_data.get("cat1", {}).get("searchResults", {}).get("listResults", [])
    for prop in properties:
        print(f"地址: {prop.get('address')}, 价格: {prop.get('price')}")
except json.JSONDecodeError as e:
    print(f"解析失败: {e}")

2. 验证返回内容类型

执行请求后先打印response.text:

  • 如果返回HTML验证码页面:说明被反爬识别,需要更换User-Agent、降低请求频率,或使用代理IP。
  • 如果返回空内容:检查API URL是否正确,或尝试先访问Zillow主页面获取会话Cookie后再请求API。

3. 使用会话保持Cookie

Zillow可能需要会话Cookie验证请求合法性,先访问目标页面建立会话,再请求API:

session = requests.Session()
# 先访问主页面获取Cookie
session.get("https://www.zillow.com/daytona-beach-fl-32119/", headers=headers)
# 复用会话请求API
api_response = session.get(api_url, headers=headers)
property_data = json.loads(api_response.text)

4. 确认API端点有效性

Zillow的API端点会动态变化,建议通过浏览器开发者工具的「Network」标签,重新捕获当前页面加载时的真实API请求URL和参数,确保请求地址正确。

内容的提问来源于stack exchange,提问作者Lalit Joshi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:47:13