在当今的互联网时代,数据挖掘和分析已经成为各个行业的重要组成部分。房地产市场,尤其是二手房市场的数据分析,可以帮助我们更好地理解市场趋势与价格波动。本文将介绍如何使用Python爬取链家的二手房数据,并进行简单的数据分析。
一、环境准备
在开始之前,我们需要确定Python环境已经安装,并且安装一些基本的爬虫库和数据分析库。可以使用以下命令安装所需的库:
pip install requests beautifulsoup4 pandas matplotlib
二、爬取链家二手房数据
以下代码示例演示如何爬取链家网的二手房数据。我们以某个城市的二手房页面为例,提取房源的标题、价格与面积等信息。
import requests
from bs4 import BeautifulSoup
import pandas as pd
def fetch_data(page):
url = f'https://bj.lianjia.com/ershoufang/pg{page}/'
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.121 Safari/537.36"
}
response = requests.get(url, headers=headers)
# 判断是否请求成功
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
houses = soup.find_all('div', class_='info clear')
data = []
for house in houses:
title = house.find('a', class_='title').text.strip()
price = house.find('span', class_='total').text.strip()
area = house.find('div', class_='area').find('span').text.strip()
data.append({'标题': title, '价格': price, '面积': area})
return data
else:
print("请求失败")
return None
if __name__ == "__main__":
all_data = []
for i in range(1, 6): # 爬取前5页数据
result = fetch_data(i)
if result:
all_data.extend(result)
# 将数据转化为DataFrame
df = pd.DataFrame(all_data)
print(df.head()) # 打印前5行数据
三、数据处理与分析
爬取的数据通常需要经过处理才能进行分析。我们可以将价格转换为整数,将面积转化为浮点数,方便后续的统计分析。
# 数据清洗
df['价格'] = df['价格'].str.replace('万', '').astype(int) * 10000 # 将价格转换为整数
df['面积'] = df['面积'].str.replace('平米', '').astype(float) # 将面积转换为浮点数
# 描述性统计
print(df.describe())
# 绘制价格与面积的关系图
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 6))
plt.scatter(df['面积'], df['价格'], alpha=0.5)
plt.title('面积与价格的关系')
plt.xlabel('面积 (平米)')
plt.ylabel('价格 (元)')
plt.grid()
plt.show()
四、总结
通过以上步骤,我们成功实现了从链家网爬取二手房数据,并对其进行了基本的数据清洗与分析。通过绘制价格与面积的关系图,我们可以直观地观察到二手房价格在不同面积上的分布情况。
在实际应用中,数据爬取与分析可以更进一步,例如将数据存储到数据库,实现定时爬取以获取最新数据,或者使用更复杂的分析模型来预测房价趋势等。希望本篇文章能为您在数据分析领域的探索之路提供启示。