使用requests爬取58同城二手房信息并使用matplotlib进行可视化展示

在本文中,我们将介绍一个简单的网络爬虫示例,用于从58同城网站上获取二手房信息,并将结果保存到CSV文件中。这个爬虫将通过请求页面、解析HTML内容以及保存数据到文件来完成任务。

1. 爬虫的目标

我们的爬虫目标是从58同城网站获取多页的二手房信息,包括房屋标题、价格、平均价格、层数、面积、朝向和建筑年份等数据,并将这些数据保存到CSV文件中。

2. 爬虫的实现步骤

2.1 导入所需模块

import csv
import time
import os
from lxml import etree
import requests

我们使用csv模块来处理CSV文件,time模块用于设置等待间隔,os模块用于检查文件是否存在,lxml模块用于解析HTML内容,requests模块用于发送网络请求。

2.2 发送请求并解析HTML

def get_page_resource(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36 Edg/115.0.1901.203",
    }
    res = requests.get(url, headers=headers)

 #。。。。。。。。。。。。。。。。。。。
    # 组装数据
    data = []
    # 部分代码
    for i in range(len(title_list)):
       #。。。。。。。。。。。。。。。。。。
    return data

这段代码中,我们首先发送网络请求获取页面内容,然后使用XPath表达式解析HTML内容,提取出我们需要的房屋信息,并将每条信息保存为一个列表,最后返回包含所有信息的列表。

2.3 保存数据到CSV文件

def save_to_csv(data):
    file_exists = os.path.isfile('property_data.csv')
    with open('property_data.csv', 'a', newline='', encoding='utf-8') as file:
        writer = csv.writer(file)
        if not file_exists:

这段代码用于将数据保存到CSV文件中。首先检查文件是否存在,如果不存在则写入表头,然后将数据逐行写入文件。

2.4 主程序逻辑

if __name__ == '__main__':
    for i in range(10, 100):  # 爬取10到99页的数据
        url = f'https://sz.58.co..........'
  		# 部分代码	      
        time.sleep(4)  # 设置等待时间,防止被封IP
    print('爬取完成!')

在主程序中,我们循环爬取10到99页的数据,每次请求页面后等待4秒钟,然后调用保存数据到CSV文件的函数。

数据可视化分析:58同城二手房信息

在本篇博客中,我们将深入探讨如何利用Python中的数据处理和可视化工具对58同城网站上的二手房信息进行分析和可视化展示。我们将展示核心的可视化代码,以展示房屋信息的一些关键特征和趋势。

数据可视化

首先,我们使用Python中的Pandas库读取并处理爬取到的房屋信息数据。然后,我们将通过Matplotlib和Seaborn库创建图表,以展示房屋信息的不同方面。

1. 平均价格趋势图

首先,我们通过以下代码绘制了房屋平均价格随着建筑年份变化的趋势图:

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据
data = pd.read_csv('./property_data.csv')

# 转换为数值类型
data['Average Price'] = data['Average Price'].str.extract('(\d+)').astype(float)
data['Year'] = data['Year'].str.extract('(\d+)').astype(float)

# 按照 'Year' 列分组,计算每年的平均价格
average_prices = data.groupby('Year')['Average Price'].mean()


这段代码计算了每年的平均价格,并通过折线图展示了房屋平均价格随着建筑年份变化的趋势。

2. 房屋面积与价格散点图

接下来,我们通过以下代码绘制了房屋面积与价格之间的关系散点图:

plt.figure(figsize=(8, 6))
plt.scatter(data['Area'], data['Price'], color='green')
plt.title('Relationship between Area and Price')
plt.xlabel('Area (㎡)')
plt.ylabel('Price')
plt.grid(True)
plt.show()

这段代码展示了房屋面积与价格之间的关系,可以清晰地看到房屋面积与价格之间的趋势和分布情况。

通过以上两个示例,我们展示了如何利用Python中的数据处理和可视化工具对58同城网站上的二手房信息进行分析和展示。这些可视化图表可以帮助我们更好地理解房屋信息的特征和趋势,从而做出更明智的决策。

3. 结果展示

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 总结

这个简单的爬虫示例演示了如何使用Python编写一个网络爬虫,从58同城网站上爬取二手房信息,并将结果保存到CSV文件中。通过了解这个示例,你可以进一步学习和掌握网络爬虫的原理和实践应用。我们展示了如何利用Python中的数据处理和可视化工具对58同城网站上的二手房信息进行分析和展示。这些可视化图表可以帮助我们更好地理解房屋信息的特征和趋势,从而做出更明智的决策。

需要源代码的同学可以添加

在这里插入图片描述

  • 14
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值