仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵

我有个小外甥,今年准备毕业,在我的极力劝说下来到了深圳工作,那第一件事就是租房子了。

深圳的房价大家也知道,最近几年涨的厉害,3万一平都买不到什么好房子,其实看到这个情况,我着实为下一代担心,月入2W的应届毕业生寥寥无几,就是进了大厂赚到了钱,面临的压力也是非常大,最后买房就变成了掏空两个家庭一辈子的事情。

仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵_第1张图片

 

今天是周五,闲来无事,我就用Python爬点深圳房价的数据,然后做出可视化分析分析吧。

仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵_第2张图片

来了就是深圳人哈哈哈哈

Python对于我的粉丝来说可能很简单,大家都是做IT的,面对最简单的语言不得大展身手?大家做可视化用什么工具呢?其实python也能,但是可视化太丑了,还很麻烦,所以不考虑。

Pyecharts,Echarts,Highcharts...会点程序很重要阿,一个charts就能玩出这么多花样,但是他们最多算个图表插件罢了,我还是喜欢用现成的工具,比如BI工具。说到BI,我不止一次地给你们推荐,今天就来做个实际操作。

FineBI是交互式数据可视化BI工具,可以快速地把数据转化为各种漂亮的可视化图表。

仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵_第3张图片

FineBI做出的驾驶舱

除此之外,FineBI这款商业分析工具还可以制作出更多漂亮的图表,协作并共享自定义仪表板和交互式报表等,文末给你们送上它的下载地址,先看分析。

一、数据获取

我们的数据来源是链接网上的信息,应该还挺全的,虽然最近它在裁员....

仅用半小时,从Python爬取到BI可视化,告诉你深圳房价有多贵_第4张图片

这就是我们需要的数据页面了

爬取各个行政区房源信息,并数据保存为DataFrame,话不多说,直接上代码:

area_dic = {'罗湖区':'luohuqu',
            '福田区':'futianqu',
            '南山区':'nanshanqu',
            '盐田区':'yantianqu',
            '宝安区':'baoanqu',
            '龙岗区':'longgangqu',
            '龙华区':'longhuaqu',
            '坪山区':'pingshanqu'}


# 加个header以示尊敬
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36',
           'Referer': 'https://sz.lianjia.com/ershoufang/'}

# 新建一个会话
sess = requests.session()
sess.get('https://sz.lianjia.com/ershoufang/', headers=headers)

# url示例:https://sz.lianjia.com/ershoufang/luohuqu/pg2/
url = 'https://sz.lianjia.com/ershoufang/{}/pg{}/'


# 新建一个DataFrame存储信息
data = pd.DataFrame()

for key_, value_ in area_dic.items():
    # 获取该行政区下房源记录数
    start_url = 'https://sz.lianjia.com/ershoufang/{}/'.format(value_)
    html = sess.get(start_url).text
    house_num = re.findall('共找到 (.*?) 套.*二手房', html)[0].strip()
    print('{}: 二手房源共计「{}」套'.format(key_, house_num))
    time.sleep(1)
    # 页面限制 每个行政区只能获取最多100页共计3000条房源信息
    total_page = int(math.ceil(min(3000, int(house_num)) / 30.0))
    for i in tqdm(range(total_page), desc=key_):
        html = sess.get(url.format(value_, i+1)).text
        soup = BeautifulSoup(html, 'lxml')
        info_collect = soup.find_all(class_="info clear")
        
        for info in info_collect:
            info_dic = {}
            # 行政区
            info_dic['area'] = key_
            # 房源的标题
            info_dic['title'] = re_match('target="_blank">(.*?)
                    

你可能感兴趣的:(大数据,数据可视化,数据分析,商业智能BI,python)