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

为何soup.find_all()仅返回单个结果?网页爬取技术问询

问题分析与解决

原因1:循环逻辑错误,仅输出最后一个元素

你的代码里,info = (Title, location, Price)和print(info)写在循环外部。不管循环遍历多少个result,最终只会输出最后一次循环赋值的变量值,看起来就像只拿到了单个元素。

修复方法:把打印逻辑移到循环内部,遍历一个结果就输出一个:

for result in results:
    Title = result.find('div', class_= "similar-listings-info").text.replace('\n','')
    location = result.find( class_= "listings-location").text.replace('\n','')
    Price = result.find('div', class_= "similar-listings-price").text.replace('\n','')
    
    info = (Title, location, Price)
    print(info)

原因2:页面中符合双class条件的元素确实只有一个

检查页面静态源码(可以用print(page.text)查看),确认是否存在多个同时拥有similar-listings-item和sponsored-listing两个class的div元素。如果页面本身只有一个这类元素,find_all自然只会返回一个结果。

原因3:页面内容动态加载,静态请求无法获取全部数据

如果网站通过JavaScript动态加载更多房源,requests.get()只能获取页面初始加载的静态内容,后续加载的元素不会出现在page.content里。这种情况需要用Selenium等工具模拟浏览器加载动态内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:15:53