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

如何使用BeautifulSoup提取网页搜索结果中的物品ID?

提取immoweb搜索结果中的房源唯一ID

你的问题核心在于immoweb的搜索结果数据并非直接嵌入HTML的DOM元素中,而是通过JavaScript动态渲染的,所以静态爬取到的search-app标签内看不到存储ID的节点,房源ID实际藏在页面的初始化JSON数据里。

解决步骤及代码实现如下:

  1. 补全依赖导入:你的代码遗漏了requests库的导入,先补充完整;
  2. 定位存储数据的script标签:页面中存在包含__INITIAL_STATE__的script标签,里面存储了所有搜索结果的结构化数据;
  3. 提取并解析JSON数据:从script标签文本中截取出JSON内容,解析后即可直接获取每个房源的唯一ID。
from bs4 import BeautifulSoup
import pandas as pd
import requests
import json
import re

URL = "https://www.immoweb.be/en/search/apartment/for-sale/Antwerp/2000?countries=BE&page=1&orderBy=relevance&card=10286959"
page = requests.get(URL)

soup = BeautifulSoup(page.content, "html.parser")

# 找到包含初始化数据的script标签
script_tag = soup.find("script", string=re.compile(r"__INITIAL_STATE__"))

# 截取JSON内容:提取等号后的部分,去掉末尾分号
json_text = re.search(r"__INITIAL_STATE__ = (.*?);", script_tag.string).group(1)
data = json.loads(json_text)

# 遍历结果提取房源ID
property_ids = []
# 数据路径可根据页面实际结构调整,以下为常见路径
for item in data["search"]["results"]["items"]:
    property_ids.append(item["id"])

print("提取到的房源ID:", property_ids)

补充说明:

  • __INITIAL_STATE__里不仅包含房源ID,还存储了房源的基础信息,可按需提取;
  • 如果后续页面数据结构变动,可通过打印data的键值对,重新定位房源列表的具体路径。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:15:14