python 房天下网站房价数据爬取与可视化分析

这篇具有很好参考价值的文章主要介绍了python 房天下网站房价数据爬取与可视化分析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.引言

        在过去几十年中,房地产市场一直是全球经济的重要组成部分。房地产不仅是个人家庭的主要投资渠道,还对国家经济有着深远的影响。特别是,房地产市场的价格波动对金融市场稳定和宏观经济政策制定产生了重要影响。因此,理解和预测房地产市场的价格走势一直是研究人员和政策制定者关注的焦点。 然而,房地产市场的价格走势是一个复杂而多变的问题,受到多种因素的影响,包括经济周期、政策变化、地理位置和市场供需等。因此,需要开展深入的研究来解析这些因素如何影响房价,以提供有关房地产市场未来走势的重要见解。

        爬取的房价信息网站为房天下(【郑州租房网_郑州租房信息|房屋出租】- 房天下 (fang.com))。房价数据可视化分析,python,信息可视化,数据分析

2.数据爬取

2.1导入必要的库:

  • requests:用于发送HTTP请求以获取网页内容。
  • BeautifulSoup:用于解析HTML页面。
  • numpy:用于处理数值数据。
  • re:用于正则表达式匹配。
  • time:用于生成随机延迟,以避免频繁访问网站。
  • random:用于生成随机延迟时间。
  • pandas:用于数据处理和存储。
import requests
from bs4 import BeautifulSoup
import numpy as np
import re
import time
import random

2.2 定义请求头部信息headers,模拟浏览器请求,包括User-Agent和Cookie信息,以便访问网站。

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 Edg/114.0.1823.67',
    'Referer':'https://zz.zu.fang.com/',
    'Cookie':'改成自己的'
}

2.3 创建一个空的Pandas DataFrame对象data,用于存储爬取到的数据,包括标题、租房方式、布局、面积、朝向、价格和城市。

data = pd.DataFrame(columns=['标题','租房方式','布局','面积','朝向','价格','城市'])

2.4 创建一个包含城市代码的列表bar,并定义一个城市名和城市代码的字典city_dict,用于城市名的映射。

bar = ['sh','gz','sz','tj','cd','cq','wuhan','suzhou','hz','nanjing','jn']

# 中英文城市名对应关系字典
city_dict = {
    'sh': '上海',
    'gz': '广州',
    'sz': '深圳',
    'tj': '天津',
    'cd': '成都',
    'cq': '重庆',
    'wuhan': '武汉',
    'suzhou': '苏州',
    'hz': '杭州',
    'nanjing': '南京',
    'jn': '济南'
}

2.5 使用循环遍历城市列表bar,并在每个城市上执行以下操作:

  • 构建URL以获取特定城市的租房信息页面。
  • 发送HTTP请求以获取页面内容。
  • 使用Beautiful Soup解析页面HTML。
  • 使用正则表达式提取标题、租房方式、布局、面积、朝向和价格等信息。
  • 将提取的数据添加到Pandas DataFrame中。
  • 在每次数据爬取后,生成随机的延迟时间,以避免对网站造成过多请求,然后使用time.sleep()函数来暂停程序执行
for j in bar:
    print(f'正在爬取 {city_dict.get(j)}')
    for i in range(50):
        url_new = f'https://{j}.zu.fang.com/house/i3{i+2}/'
        response1 = requests.get(url_new,headers=headers)
        text1 = response1.text
        title = re.findall('target="_blank" title="(.*?)">', text1)
        zhutype = re.findall('<p class="font15 mt12 bold">\r\n                (.*?)<span class="splitline">', text1)
        inSale = re.findall('<span class="splitline">|</span>(.*?)<span class="splitline">|</span>.*?�O<span', text1)
        buju = []
        mianji = []
        for i in inSale:
            if '室' in i or '户' in i:
                buju.append(i)
            if '�' in i:
                mianji.append(i[:-2])
        zaox = re.findall('s="splitline">|</span>(.*?)\r\n            </p>', text1)
        zaox_list = []
        for i in zaox:
            if len(i)>2:
                zaox_list.append(i.split('</span>')[-1])
        jiage = re.findall('<span class="price">(.*?)</span>', text1)

        for i in range(len(title)):
            try:
                data.loc[len(data)] = [title[i],zhutype[i],buju[i],mianji[i],zaox_list[i],jiage[i],city_dict.get(j)]
            except:
                # 捕获所有类型的异常
                pass
        # 生成随机的延迟时间
        delay = random.uniform(0.1, 0.5)
        # 暂停程序
        time.sleep(delay)

2.6 最后,将所有爬取到的数据存储到CSV文件房天下数据.csv中,使用data.to_csv()方法。

data.to_csv('./房天下数据.csv')  

        最终爬取了 31474 条数据,数据示例如下:

房价数据可视化分析,python,信息可视化,数据分析

3.数据可视化分析

3.1 数据导入预处理

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] =False 

data = pd.read_csv('./房天下数据.csv')

data['面积'] = data['面积'].astype('int')
data['价格'] = data['价格'].astype('int')

房价数据可视化分析,python,信息可视化,数据分析

3.2 饼图 - 租房方式数量比较

df =data
# 计算每种租房方式的数量
rental_counts = df['租房方式'].value_counts()

# 设置饼图
fig, ax = plt.subplots(figsize=(8, 6))
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99']
explode = (0.1, 0, 0, 0)  # 突出显示第一个扇区

# 创建饼图
ax.pie(rental_counts, labels=rental_counts.index, autopct='%1.1f%%',
       startangle=30, colors=colors, explode=explode)

# 添加标题和图例
ax.set_title('租房方式数量比较', fontsize=16)
ax.legend(loc='upper right')

# 显示图表
plt.show()

房价数据可视化分析,python,信息可视化,数据分析

3.3 核密度估计图 - 房屋面积分布

plt.figure(figsize=(10, 6))
sns.kdeplot(data=df, x='面积', fill=True, palette='Blues')
plt.title('房屋面积分布', fontsize=16)
plt.xlabel('面积', fontsize=12)
plt.ylabel('密度', fontsize=12)
plt.show()

房价数据可视化分析,python,信息可视化,数据分析

3.4 柱状图 - 不同朝向的房屋数量比较

# 计算每个朝向的房屋数量
orientation_counts = df['朝向'].value_counts()[:6]

# 设置柱状图
plt.figure(figsize=(10, 6))
colors = ['#ff9999', '#66b3ff', '#99ff99', '#ffcc99']
orientation_counts.plot(kind='bar', color=colors)

# 添加标题和轴标签
plt.title('不同朝向的房屋数量比较', fontsize=16)
plt.xlabel('朝向', fontsize=12)
plt.ylabel('数量', fontsize=12)
plt.xticks(rotation=45, fontsize=10)

# 显示图表
plt.show()

房价数据可视化分析,python,信息可视化,数据分析

3.5 盒图 - 房屋价格分布

plt.figure(figsize=(10, 6))
sns.boxenplot(data=df, y='价格', color='purple')
plt.title('房屋价格分布', fontsize=16)
plt.ylabel('价格', fontsize=12)
plt.show()

房价数据可视化分析,python,信息可视化,数据分析

3.6 条形图 - 不同城市的房屋价格对比

plt.figure(figsize=(12, 6))
sns.barplot(data=df, x='城市', y='价格', palette='coolwarm')
plt.title('不同城市的房屋价格对比', fontsize=16)
plt.xlabel('城市', fontsize=12)
plt.ylabel('价格', fontsize=12)
plt.xticks(rotation=45, fontsize=10)
plt.show()

房价数据可视化分析,python,信息可视化,数据分析

3.7 不同布局类型的房屋数量比较

# 计算每种布局类型的数量
layout_counts = df['布局'].value_counts().sort_values(ascending=True)[-10:]

# 设置水平条形图
plt.figure(figsize=(10, 8))
colors = ['#66b3ff'] * len(layout_counts)  # 使用单一颜色
plt.barh(layout_counts.index, layout_counts, color=colors)

# 添加标题和轴标签
plt.title('不同布局类型的房屋数量比较', fontsize=16)
plt.xlabel('数量', fontsize=12)
plt.ylabel('布局类型', fontsize=12)

# 调整刻度标签的字体大小
plt.xticks(fontsize=10)
plt.yticks(fontsize=10)

# 显示图表
plt.show()

房价数据可视化分析,python,信息可视化,数据分析 

3.8 面积与价格的关系图

# 提取面积和价格的数据
area = df['面积']
price = df['价格']

# 设置散点图
plt.figure(figsize=(10, 6))
plt.scatter(area, price, alpha=0.6, color='b', edgecolors='k')

# 添加标题和轴标签
plt.title('面积与价格的关系图', fontsize=16)
plt.xlabel('面积', fontsize=12)
plt.ylabel('价格', fontsize=12)

# 显示图表
plt.show()

房价数据可视化分析,python,信息可视化,数据分析文章来源地址https://www.toymoban.com/news/detail-771404.html

到了这里,关于python 房天下网站房价数据爬取与可视化分析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大数据毕业设计 二手房数据爬取与分析可视化系统 -python

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月16日
    浏览(51)
  • 计算机毕设 大数据上海租房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月07日
    浏览(46)
  • 计算机毕设 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年02月04日
    浏览(45)
  • 毕业设计-基于大数据的电影爬取与可视化分析系统-python

    目录 前言 课题背景和意义 实现技术思路 实现效果图样例     📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学

    2024年01月21日
    浏览(66)
  • 大数据毕设分享 大数据二手房数据爬取与分析可视化 -python 数据分析 可视化

    # 1 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项

    2024年01月23日
    浏览(54)
  • 对利用Python爬取到的房价信息做数据可视化(附完整代码)

          大家好,我是带我去滑雪,每天教你一个小技巧! 本文利用Python爬取到的房价信息做数据可视化,爬取数据的文章见: (利用Python爬取房价信息(附代码)_用python爬取房价数据_带我去滑雪的博客-CSDN博客)       所爬取的指标有小区名称、房屋位置、房屋户型、房屋面

    2024年02月02日
    浏览(47)
  • 基于Python的电影票房爬取与可视化系统的设计与实现

    博主介绍 : ✌ 全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ 🍅 文末获取源码联系 🍅 👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟  java项目

    2024年02月09日
    浏览(41)
  • 【毕业设计】基于大数据的招聘职业爬取与分析可视化

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2023年04月08日
    浏览(70)
  • 毕业设计项目 基于大数据的招聘职业爬取与分析可视化

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年03月23日
    浏览(49)
  • 数据可视化课程设计——北京新发地官网数据分析与可视化展示【内容在jupyter notebook里面展示】包含数据爬取与可视化分析详解

    目录 一、课题说明 1.1、设计原因: 1.2、设计目标: 1.3、开发环境: 1.4、爬取网站链接 二、准备工作 2.1、数据获取: 2.2、爬取的数据说明: 2.3、爬虫程序设计的思路: 三、详细设计 3.1、导入库的模块: 3.2、对数据先进行读取: 3.2.1、显示前5条记录 3.2.2、查看数据的规模

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包