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

如何提取Zillow数据中相同li标签下的卧室、卫浴、面积三类字段?

解决方案

原有代码存在两个问题:

  • 全局查找class为空的li元素,容易匹配到页面其他无关节点,且返回的3个匹配结果分别对应卧室、卫浴、面积三个字段,原有代码仅取了第一个结果
  • 直接调用li的text属性会连带单位文本一起返回,无法单独提取数值,也没有处理面积的千位分隔符逗号

修正后可正常提取目标值的代码如下:

from bs4 import BeautifulSoup

tag='<div class="list-card-info"><a class="list-card-link list-card-link-top-margin" href="https://www.zillow.com/homedetails/12021-Tralee-Rd-UNIT-102-Lutherville-MD-21093/60873148_zpid/" tabindex="0"><address class="list-card-addr">12021 Tralee Rd UNIT 102, Lutherville, MD 21093</address></a><div class="list-card-footer"><p class="list-card-extra-info">LONG &amp; FOSTER REAL ESTATE, INC.</p></div><div class="list-card-heading"><div class="list-card-price">$411,000</div><ul class="list-card-details"><li class="">3<abbr class="list-card-label"> <!-- -->bds</abbr></li><li class="">2<abbr class="list-card-label"> <!-- -->ba</abbr></li><li class="">1,813<abbr class="list-card-label"> <!-- -->sqft</abbr></li><li class="list-card-statusText">- Apartment for sale</li></ul></div></div>'
soup = BeautifulSoup(tag, 'html.parser')

# 提取地址、价格字段
address = soup.find('address', {'class': 'list-card-addr'}).text
price = soup.find('div', {'class': 'list-card-price'}).text

# 限定在房源属性列表内查找空class的li,避免匹配无关节点
attr_list = soup.select('ul.list-card-details li[class=""]')
# 分别提取三个字段的数值,处理面积的千位分隔符
beds = attr_list[0].contents[0].strip()
baths = attr_list[1].contents[0].strip()
sqft = attr_list[2].contents[0].strip().replace(',', '')

# 输出结果
print(address, '---', price, '---', beds, '---', baths, '---', sqft)

运行后输出结果:

12021 Tralee Rd UNIT 102, Lutherville, MD 21093 --- $411,000 --- 3 --- 2 --- 1813

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 00:36:08