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

Python+BeautifulSoup爬取mmreality.cz房源信息无输出问题排查与需求实现

问题排查与解决方案:mmreality.cz房源数据抓取失败处理

我帮你梳理了代码里的问题,也给出了可行的实现方案:

问题根源分析

你的代码之所以没有输出,核心问题有两个:

  1. 标签名错误:soup.find_all('id', attrs={'class':'...'})完全用错了语法——find_all的第一个参数是HTML标签名(比如div、p),而不是id。你想找的是带有指定class的房源容器,不是<id>标签,这直接导致results是空列表,循环根本没执行。
  2. 可能的请求拦截:很多网站会拦截没有浏览器标识(User-Agent)的请求,返回空内容或者错误页面,这也会导致后续解析不到数据。

另外,你用了完整的长class字符串,容易因为网站微调class属性而失效,建议简化匹配。

修正后的实现代码

import requests
from bs4 import BeautifulSoup

# 目标房源列表URL
URL = 'https://www.mmreality.cz/nemovitosti/prodej/byty/praha-vychod/?query=bcw9DoAgDIbh2zgjiro4eQzCQBB%2FErUEigm3F3Ss69Ovr4HzhEsG1BiDkkyNdWU%2B0wb32xZYLaxeuy3J2S46HjhBvNCn9%2BYhupAfJSZnvwRnjHqtRiEo8zL%2FyTR53lFuMw%2BUReaeclfi%2FAE%3D'

# 模拟浏览器请求头,避免被网站拦截
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36'
}

# 发送HTTP请求
page = requests.get(URL, headers=headers)

# 先检查请求是否成功
if page.status_code != 200:
    print(f"请求失败,状态码:{page.status_code}")
else:
    soup = BeautifulSoup(page.content, 'html.parser')
    # 匹配房源容器,简化class参数(取独特的部分,避免网站更新class导致失效)
    results = soup.find_all('div', class_='cell xsmall-24 mb-4 grid-y pos-relative rounded')
    
    if not results:
        print("未找到任何房源容器,可能网站结构已更新或请求被拦截")
    else:
        for house_item in results:
            # 抓取房源描述文本(class为fs-s fw-light pl-4 pr-4的p元素)
            house_desc = house_item.find('p', class_='fs-s fw-light pl-4 pr-4')
            if house_desc:
                desc_text = house_desc.text.strip()
                print(f"房源信息:{desc_text}")
            
            # 抓取房源价格(class为block text-secondary fs-xxl pl-4 pr-4 mb-4的strong元素)
            house_price = house_item.find('strong', class_='block text-secondary fs-xxl pl-4 pr-4 mb-4')
            if house_price:
                price_text = house_price.text.strip()
                print(f"价格:{price_text}\n")

关键优化点说明

  • 修正标签匹配:把错误的find_all('id', ...)改成了find_all('div', class_='...'),准确匹配房源的父容器。
  • 添加请求头:通过User-Agent模拟浏览器请求,避免被网站反爬机制拦截。
  • 简化class匹配:只保留class中独特的前缀部分,降低网站更新class导致代码失效的概率。
  • 增加异常判断:添加了请求状态码检查、容器为空判断,以及元素非空判断,避免程序崩溃,同时方便排查问题。
  • 分别处理两个目标元素:同时抓取了你需要的房源描述和价格信息,并且输出清晰。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 12:42:32