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

如何爬取CoreLogic网站中脚本加载的90条公开销售数据?

解决CoreLogic近期销售数据爬取问题

问题分析

  1. 403错误原因:你的请求未携带合法浏览器请求头,网站反爬机制拦截了默认urllib请求。
  2. 数据定位错误:你指定的script标签类型不正确,目标加密数据通常存储在包含全局初始化状态的脚本块中(比如window.__INITIAL_STATE__变量)。

解决方案步骤

1. 携带请求头绕过403拦截

使用requests库(比urllib更易用),添加模拟浏览器的请求头,避免被反爬识别。

2. 定位正确的脚本数据块

页面加载时,目标销售数据会以加密形式嵌入在包含全局初始化状态的script标签内,需通过正则匹配定位。

3. 解密数据

网站的decodeEntities函数本质是处理HTML实体编码,直接用Python内置的html.unescape即可模拟解密逻辑。

完整代码示例

import requests
from bs4 import BeautifulSoup
import json
import re
from html import unescape

# 目标URL
url = "https://www.corelogic.com.au/our-data/recent-sales?postcode=5600"

# 模拟浏览器请求头
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9",
    "Referer": "https://www.corelogic.com.au/"
}

# 发送请求获取页面
response = requests.get(url, headers=headers)
response.raise_for_status()  # 确保请求成功

# 解析页面
soup = BeautifulSoup(response.text, "html.parser")

# 查找包含初始化状态的脚本
script_tag = soup.find("script", string=re.compile(r"window\.__INITIAL_STATE__"))
if not script_tag:
    raise ValueError("未找到包含初始化数据的脚本块")

# 提取JSON数据
script_content = script_tag.string
match = re.search(r"window\.__INITIAL_STATE__ = (.*?);", script_content, re.DOTALL)
if not match:
    raise ValueError("无法提取初始化数据")

initial_state = json.loads(match.group(1))

# 定位加密的销售数据(路径需根据网站实际结构调整)
encrypted_sales_data = initial_state["recentSales"]["data"]

# 解密数据
decrypted_data = [unescape(item) for item in encrypted_sales_data]

# 提取90条记录
sales_records = decrypted_data[:90]

# 输出示例
for idx, record in enumerate(sales_records, 1):
    print(f"记录 {idx}: {record}")

注意事项

  • 请求头更新:若再次出现403,需将User-Agent更新为当前主流浏览器的标识。
  • 数据结构适配:网站可能调整__INITIAL_STATE__内的数据路径,需通过浏览器开发者工具(F12)查看最新结构。
  • 合规性:确保爬取行为符合网站robots.txt及使用条款,避免法律风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 17:27:21