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

Python爬取房产网站数据遇NameError及列表为空问题求助

问题原因
  • 你在循环中获取到link和address后,没有将这组数据追加到listing_details列表中,只是做了变量赋值,所以列表始终为空。
  • 没有提前初始化df对象就直接调用df.append()方法,触发未定义变量的报错。
修正后的完整代码
import pandas as pd
import requests
from bs4 import BeautifulSoup

headers = {'user-agent': 'Mozilla/5.0'}
url = "https://www.realestate.co.nz/residential/sale/auckland?by=latest&oad=true&pm=1&scat=1%2C7%2C2%2C4%2C6%2C5%2C3%2C50%2C53"
response = requests.get(url, headers=headers)
listings = BeautifulSoup(response.content, "lxml")

listing_details = []

details = listings.findAll('div', attrs={"data-test":"tile"})
for detail in details:
    # 获取房源链接
    links = detail.findAll('a', href=True)
    for link in links:
        link="https://www.realestate.co.nz" + link['href']
    
    # 获取房源地址
    addresses = detail.findAll('h3')
    for address in addresses:
        address=address.text.strip()
    # 新增:将当前房源的链接和地址追加到存储列表
    listing_details.append([link, address])

# 直接用填充完成的列表生成DataFrame
df = pd.DataFrame(listing_details, columns=['Link','Location'])
print(df)
可选优化

因为每个房源卡片内只有1个链接和1个地址,可以去掉内层循环简化代码:

for detail in details:
    link = "https://www.realestate.co.nz" + detail.find('a', href=True)['href']
    address = detail.find('h3').text.strip()
    listing_details.append([link, address])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 14:27:02