首页 > 其他分享 >数据挖掘分析租售比

数据挖掘分析租售比

时间:2024-08-17 10:49:32浏览次数:7  
标签:分析 text print find element 租售 数据挖掘 data page

场景:

  前几个周末看到一个租售比的数据,于是自己花了一个周末的时间写了个python程序,从链家上爬宁波市区的数据进行分析。

解决:

 

   主要思路是这样的:利用Selenium、WebDriver模拟用户在链家上的操作,爬取网页上的租房、二手房的数据(目前只写了这两部分),然后保存在本地。在用python进行对应的数据分析。

  一些结果图如下:爬取网页上标题、价格、小区等信息

   主要函数如下:其实就是找页面上各个元素的值,等加载完后获取数据,然后下一页。

# 获取数据
def get_data(driver,district):
    begin_page = 1 
    end_page = 2
    page = begin_page
    data = pd.DataFrame(columns=['Title', 'Price','Community','Area','District','UnitPrice'])
    page_element = driver.find_element(By.XPATH,"//*[@page-data]")
    # 获取data-totalpage属性的值
    page_data_attr = page_element.get_attribute('page-data')
    # 使用正则表达式提取 totalPage 的值
    match = re.search(r'"totalPage":\s*(\d+)', page_data_attr)
    if match:
        end_page = int(match.group(1))  # 将提取到的字符串转换为整数
        print(f"共:{end_page} 页数据,开始获取") 
    else:
        print("未找到 totalPage 值")
    # 翻页逻辑,这里需要根据实际页面元素进行调整
    try:
        while page < end_page:
            print(f"进入页数为:{page} 的数据")
            # 获取当前页面的所有房源信息
            #elements = WebDriverWait(driver, 30).until(
            #    EC.find_elements((By.CLASS_NAME, "content__list--item"))
            #)
            elements =  driver.find_elements(By.XPATH,"//*[@data-lj_action_housedel_id]")
            for index,element in enumerate(elements):
                title = element.find_element(By.CLASS_NAME,"title").text.replace('\n','')
                des = element.find_element(By.CLASS_NAME,"flood").text.replace('\n','')
                # 小区
                community = des.strip().split('-')[0]
                # 面积
                area_text = element.find_element(By.CLASS_NAME,"houseInfo").text.replace('\n','')
                area_text = area_text.strip().split('|')[1]
                match = re.search(r'\d+\.\d+|\d+', area_text)
                if match:
                    area = float(match.group(0))  # 将匹配到的字符串转换为浮点数
                else:
                    print("没有找到数字")
                # 价格
                total_price = element.find_element(By.CLASS_NAME,"totalPrice").text.replace('\n','')
                unit_price = element.find_element(By.CLASS_NAME,"unitPrice").text.replace('\n','').replace('"','')
                new_row = {'Title': title, 'Price': total_price,'Community':community,'Area':area,'District':district,'UnitPrice': unit_price}
                # print(f"{new_row}")
                data.loc[len(data.index)] = new_row

            try:
                page_element = driver.find_element(By.XPATH,"//*[@page-data]")
                # print(f"{page_element}")
                xpath_expression = "//a[normalize-space(text())='下一页']"
                next_page_button = page_element.find_element(By.XPATH,xpath_expression)
                # 滚轮
                driver.execute_script("arguments[0].scrollIntoView();", next_page_button)
                # 执行一些操作,例如点击
                next_page_button.click()
            finally:
                # 关闭浏览器
                # driver.quit()
                page_element = driver.find_element(By.CSS_SELECTOR,'[class="on"]')
                page = int(page_element.text)
                # 避免死循环
                # break
                #print(f"页数为:{page} 的数据获取完毕")       
    except Exception as e:
        print("发生错误:", e)
        
    # 存储开始页数结束页数
    print(f"共获取从{begin_page}页到{page}页的数据")
    # 返回数据
    return data

  然后用同样的方法获取租房、二手房的数据信息,在小区维度租售比分析:

   想做的好一些,可以用图表进行绘制,也可以分析不同地区、不同类型房子的租售比。用来学习数据爬虫,还是有点意思的。有需要源码的联系我吧,不过只实现了一个demo。

标签:分析,text,print,find,element,租售,数据挖掘,data,page
From: https://www.cnblogs.com/chenzibai/p/18364125

相关文章

  • Google Earth Engine(GEE)——1986-2021年黄河入海口区域的逐年影像展示案例分析,并加载
    函数:size()Returnsthenumberofelementsinthecollection.返回集合中元素的数量。Arguments:this:collection(FeatureCollection):Thecollectiontocount.Returns:Integer融合影像可以一个接一个进行融合merge(collection2)Mergestwoimagecollectionsi......
  • 爬虫对德州市企业信息采集系统 项目编号:99954(案例分析)
    爬虫对德州市企业信息采集系统摘 要    随着信息技术的快速发展,大数据已经成为现代社会的重要资源。在德州市,为了更好地管理和利用企业信息,德州市政府推出了一套先进的企业信息采集系统。该系统采用了先进的爬虫技术,能够高效地采集、整理和分析各类企业信息,为政府......
  • 社区老人健康管理系统 项目编号:99120(案例分析)
    社区老人健康管理系统摘要    本论文主要论述了如何使用SpringBoot技术开发一个社区老人健康管理系统,随着社会老龄化进程的加剧,老年人健康问题日益引起人们的关注。有效的健康管理系统对于提升老人生活质量、延长寿命具有重要意义。    本文首先分析了当......
  • 基于Python爬虫实现招聘数据分析可视化大屏
    作者简介:Java领域优质创作者、CSDN博客专家、CSDN内容合伙人、掘金特邀作者、阿里云博客专家、51CTO特邀作者、多年架构师设计经验、多年校企合作经验,被多个学校常年聘为校外企业导师,指导学生毕业设计并参与学生毕业答辩指导,有较为丰富的相关经验。期待与各位高校教师、企业......
  • 26-Prism和SPSS的显著性分析
      使用prism计算相关性,并绘制柱形图:示例:有4组数据,每组都有4个样本,这种单变量的多组数据之间的比较适用One-wayANOVA检验。若是双变量的多组数据则适用于TWO-wayANOVA检验。若是只有两组,适用于t-test检验。Grouplength1341321311312482......
  • jsp底层运行原理分析
    jsp一、jsp的概念JSP全名是Java Server Pages,它是建立在Servlet规范之上的动态网页开发技术。更直观的就是html代码可以与java代码同时存在一个页面中。二、jsp的九大内置对象resquest——请求域对象request对象是javax.servlet.httpServletRequest类型的对象。......
  • Ettercap 是一个用于网络嗅探和中间人攻击的开源工具,主要用于网络安全测试和分析。它
    Ettercap是一个用于网络嗅探和中间人攻击的开源工具,主要用于网络安全测试和分析。它支持多种平台,包括Linux、Windows和macOS。Ettercap可以用来监视、分析、和修改网络流量,通常用于测试和审计网络的安全性。以下是Ettercap的一些主要功能和特点:主要功能嗅探和分析网络......
  • unity游戏源码和教程:智能分析话语的三维唯美世界
    我不想和任何人说话,大家不要打扰我。这个游戏的源码(含教程文档)我放到了夸克网盘https://pan.quark.cn/s/618fb9459029小区:小区傍晚的雪:小区的晚上:家里:市中心:市街道:郊区:(一)声明小区场景的三维模型来自于UnityStore的unity包:LowPolyJapaneseHousingComplex。很......
  • vue+element+springboot智慧执法平台源码,融合信息技术、大数据分析和物联网等先进技术
    智慧城管执法系统是一种利用现代科技手段提高城市管理和执法效率的创新型解决方案。该系统通过融合信息技术、大数据分析和物联网等先进技术,实现了城管执法工作的智能化、精细化和高效化。该系统的主要功能包括但不限于以下几个方面:1.智能监测:通过安装在城市各个角落的监控......
  • 解锁企业数据分析瓶颈:数据可视化与报表自动化的实战策略
    Hi~这里是ProXiao文章参考:晓观点 《数据可视化与报表自动化:如何破解企业数据分析的痛点?》在数字化时代背景下,企业面临着日益增长的数据量和复杂性,这对数据处理、分析和应用提出了更高要求。企业决策过程中如何高效利用数据资源,已成为一个关键议题。本文旨在分析企业在数据......