Python BeautifulSoup爬取房产数据出现重复结果问题求助
问题分析与解决
你的问题出在没有按房源单元来抓取数据,而是全局抓取所有标题链接和所有价格,导致两者数量不匹配且对应关系混乱。网页中同一个房源可能有多个重复的标题链接(比如卡片里的标题、图片跳转、按钮跳转),而每个房源可能对应多个价格选项,直接全局抓取就会出现标题重复3次但价格不重复的错位情况。
解决方案
先定位每个房源的独立容器,再从每个容器内提取对应的标题、链接和价格,确保每组信息一一对应。修改后的代码如下:
import requests from bs4 import BeautifulSoup userSearch = input('Input search: ') link = 'https://www.lamudi.com.ph/buy/?q={}'.format(userSearch) page = requests.get(link) soup = BeautifulSoup(page.content, 'html.parser') # 定位每个房源的容器(根据网页实际结构调整,此处以ListingCell为例) property_list = soup.find_all("div", class_="ListingCell") for property_item in property_list: # 从当前房源容器内提取标题与链接 title_link = property_item.find("a", title=True) if not title_link: continue # 跳过无标题的异常房源 title = title_link['title'] href = title_link['href'] # 从当前房源容器内提取价格 price_elem = property_item.find("span", class_="PriceSection-FirstPrice") price_text = price_elem.get_text(strip=True) if price_elem else "价格未显示" print(title) print(href) print(price_text) print("===============")
关键说明
- 先抓取每个房源的独立容器(比如
ListingCell),确保按单个房源维度处理数据,从根源避免跨房源的信息错位。 - 在容器内用
find而非find_all提取元素,每个房源只会获取一组标题链接和对应价格,不会重复抓取同一房源的多个入口链接。 - 加入判空逻辑,避免部分房源缺少信息时触发报错。
你可以用浏览器开发者工具查看房源卡片的父元素class,若ListingCell不符合实际结构,替换成网页中真实的房源容器类名即可。
内容的提问来源于stack exchange,提问作者Mattazz
相关产品推荐
相关产品推荐

