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

使用Requests爬取网页返回空数组及JSON解析报错求助

问题解决:解析finn.no房源页面时JSON解析失败

问题原因

你请求的https://www.finn.no/realestate/homes/search.html?sort=PUBLISHED_DESC是HTML网页,并非JSON接口:

  • 直接调用r.json()返回空数组,是因为该响应不是标准JSON格式,requests尝试解析失败后返回空结果。
  • 你将str(r)转为JSON的操作完全错误:str(r)得到的是响应对象的字符串表示<Response [200]>,这根本不是JSON结构,必然触发JSONDecodeError。

正确解决方案

要提取该页面的房源数据,有两种可行方式:

方式1:调用官方API接口

打开浏览器开发者工具(F12),切换到「网络」标签页,刷新页面后筛选XHR/Fetch请求,找到返回房源JSON数据的API接口(通常URL包含api、json等关键词)。找到后直接请求该API即可获取标准JSON数据:

import requests

# 示例API地址(需自行从开发者工具中获取真实接口)
api_url = 'https://www.finn.no/api/realestate/homes/search'
params = {'sort': 'PUBLISHED_DESC'}
r = requests.get(api_url, params=params)
data = r.json()
print(data)

方式2:解析HTML页面

使用HTML解析库(如BeautifulSoup4)直接解析返回的网页内容,提取所需信息:

  1. 先安装依赖:pip install beautifulsoup4
  2. 解析代码示例:
from bs4 import BeautifulSoup
import requests

url = 'https://www.finn.no/realestate/homes/search.html?sort=PUBLISHED_DESC'
r = requests.get(url)
# 解析HTML内容
soup = BeautifulSoup(r.text, 'html.parser')

# 根据页面实际结构提取数据(以下选择器需自行验证调整)
# 提取所有房源卡片
listing_cards = soup.find_all('article', class_='ads__unit')
for card in listing_cards:
    # 提取标题
    title = card.find('h2', class_='ads__unit__content__title').text.strip()
    # 提取价格
    price = card.find('div', class_='ads__unit__content__price').text.strip()
    print(f"标题:{title},价格:{price}")

注意事项

  • 请遵守网站的robots.txt规则,避免高频次请求触发反爬机制,导致IP被封禁。
  • 页面结构可能会随网站更新变化,需定期检查并调整HTML选择器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 16:40:41