Python爬取链家房产信息

本文介绍了一款使用Python的requests、BeautifulSoup等库进行链家房产信息爬取的程序,展示了如何抓取和解析网页数据,以及如何将数据整理并保存为CSV文件。程序还包含了数据清洗和初步的数据分析,如平均房价和标准差的计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python爬取链家房产信息

需要的库

  • requests
  • BeautifulSoup
  • re
  • pandas

程序如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import re
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from matplotlib.font_manager import FontProperties
myfont=FontProperties(fname=r'C:\Windows\Fonts\simhei.ttf',size=1)
sns.set(font=myfont.get_name())


def removenone(mylist):

    while '' in mylist:
        mylist.remove('')
    
    return mylist

def addnone(mylist,length,cha):
    while len(mylist) < length:
        mylist.append(cha)
    return mylist

def regnum(s):
    mylist = re.findall(r'[\d+\.\d]*', s)
    mylist = removenone(mylist)
    return mylist

def lianjia(url,page_range,district):
    #Initialization
    colum_name = ['Title','Position','Tag','followInfo','VR','Info','Total price','RMB/m^2','Attention','Update day','Bed room','Living room','Area','Floors','Year','WebPage']
    data_list = []
    for page in range(page_range):
        pgurl = url+'/pg'+str(page+1)
        print (pgurl)
        header = {
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}
        page = requests.get(pgurl, headers=header)  #访问网址 获取该 html内容
        a = page.text
        
        soup = BeautifulSoup(a,"lxml")  #解析该网页内容
        for b in soup.find_all('div',class_='info clear'): #find_all 找到 div  class='info clear' 的标签
            temp = []
            for wz in b.find_all('div',class_ = ['title','positionInfo','tag','houseInfo','priceInfo','followInfo']):
                temp.append(wz.get_text())
            # price = temp[3].split('万')
            # price = temp[3].split('元')
            tag = regnum(temp[2])
            date = regnum(temp[3])
            date = addnone(date,2,'>365')
            price = regnum(temp[5])
            temp.extend(price)
            temp.extend(date)

            temp.extend(tag)
            # print (temp)
            temp = addnone(temp,15,'0') 
            for title in b.find_all('div',class_ = 'title'):
                for link in title.find_all('a'):  
                    temp.append(link.get('href'))        
            # print (temp)
            # for pos in b.find_all('div',class_ = 'positionInfo'): 
            #     temp.append(pos.get_text())
            data_list.append(temp)	    
    data = pd.DataFrame(data_list,columns=colum_name)
    data[['Total price','RMB/m^2','Area']]=data[['Total price','RMB/m^2','Area']].astype('float')
    data.to_csv(district+'.csv',encoding='utf_8_sig')
    return data

if __name__ == '__main__':
    #User defined
    district_list = ['putuo']
    for district in district_list:
        url = "https://sh.lianjia.com/ershoufang/"+district
        # url = "https://xinxiang.lianjia.com/ershoufang/"+district
        # url = "https://sh.lianjia.com/weifang"
        page_range=100
        my = lianjia(url,page_range,district)
        DG = my[my['Update day']!='>365'][['Update day','Position','Total price','RMB/m^2','Area']].groupby("Position")
        res = DG.agg([np.mean,np.std])
        name = [i.split()[0] for i in res.index] 
        plt.scatter(name,res['RMB/m^2']['mean'])
        plt.xticks(rotation=45,size =4)
        plt.savefig("xuhui.png")
Python爬取(Zillow)数据进行分析是一个常见的数据获取和处理任务,通常用于房地产市场的研究或个人项目。以下是使用Python进行数据分析的基本步骤: 1. **安装必要的库**: - `requests`:用于发送HTTP请求获取网页内容。 - `BeautifulSoup` 或 `lxml`:解析HTML文档提取所需数据。 - `pandas`:处理和分析数据,存储为数据框。 - `re`(正则表达式):用于处理和清洗URL、HTML标签等文本数据。 - `selenium`(可选):如果网站有反爬虫机制,可能需要模拟浏览器行为。 2. **获取HTML源码**: - 使用`requests.get()`获取网站特定页面的HTML源码。 - 处理可能出现的登录验证或动态加载数据的情况。 3. **解析HTML**: - 使用BeautifulSoup或lxml解析HTML,查找包含所需数据的元素(如房屋信息、价格等)。 4. **数据提取**: - 根据页面结构,定位并提取出所需的数据,例如房屋地址、价格、面积等。 5. **数据清洗**: - 去除无关字符,处理缺失值或格式不一致的问题。 - 将数据转换为可分析的格式(如日期格式化)。 6. **数据分析**: - 利用pandas进行数据处理,计算统计指标(如平均房价、价格分布等)。 - 可视化数据:使用matplotlib、seaborn或Plotly等库绘制图表,展示分析结果。 7. **存储数据**: - 将清洗和分析后的数据保存到CSV、Excel、数据库或数据仓库中,以便后续进一步分析或分享。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值