Python链家租房信息爬虫和高德地图展示

Python链家租房信息爬虫和高德地图展示

工具:Pycharm,Win10,Python3.6.4,高德API

1.数据爬取

首先我们明确要获取的信息。我们要北京的东城,西城,朝阳,海淀,丰台这5个地区的租房信息。打开链家租房网站,选择东城地区的第二页信息我们发现网址有如下规律

Python链家租房信息爬虫和高德地图展示_第1张图片

下面就是分析页面,以东城为例,我们发现数据直接在源代码中,很简单,直接正则或者xpath获取即可。

import csv
import requests
import re
from lxml import etree
import csv
import urllib3
urllib3.disable_warnings()
headers = {
  'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'Connection': 'close',
}
'''
函数功能:
    获取索引页信息
输    入:
    url - 索引页网址
输    出:
    html - 网页源码
'''
def get_index_html(url):
    try:
        response = requests.get(url,headers=headers,timeout=60)
        response.encoding = response.apparent_encoding
        html = response.text
        return html
    except:
        get_index_html(url)
'''
函数功能:
    解析索引页
输    入:
    html - 网页源码
输    出:
    all_data - 所有信息
        describe - 描述
        area - 小区位置
        square - 面积
        direction - 朝向
        type - 类型
        floor - 楼层
        detail_url - 详情链接 
    advantage - 优势
'''
def parse_index_html(html):
    advantages = []
    all_data = []
    html_xpath = etree.HTML(html)
    for j in range(1,31):
        advantage = ''
        try:
            html_data = html_xpath.xpath('//*[@id="content"]/div[1]/div[1]/div['+str(j)+']/div/p[5]//i/text()')
            for i in html_data:
                advantage += i
                advantage += ','
            advantages.append(advantage)
        except:
            advantages.append(advantage)
            '//*[@id="content"]/div[1]/div[1]/div[2]/div/p[1]'
    infos_pattern = re.compile('twoline">.*?href="(.*?)">'        #url
                                     +'(.*?)'                        #describe
                                     +'.*?a target.*?">(.*?)'       #分区
                                     +'.*?target="_blank">(.*?)'    #local
                                     +'.*?(.*?)㎡'                   #square
                                     +'.*?(.*?)'                  #direction
                                     +'.*?(.*?)(.*?)'              #floor
                                      '.*?content__list--item-price">(.*?)

我们获取了5个地区数据之后合并在一起获得如下数据

Python链家租房信息爬虫和高德地图展示_第2张图片

2.数据分析

数据获取了之后我们要进行数据分析,主要分析三个。一是价格和面积的散点图,面积的直方图。二是5个地区的平均租价(元/平方米)的直方图。三是房源描述的词云图。

from matplotlib import  pyplot as plt
import pandas as pd
import jieba
import wordcloud
from scipy.misc import imread

plt.rcParams['font.family'] = 'SimHei' #配置中文字体
plt.rcParams['font.size'] = 15   # 更改默认字体大小
data = pd.read_csv('all_data.csv',encoding='utf-8-sig') #读取数据

#均价统计
dongcheng = data.iloc[:,9] /   data.iloc[:,5]
data.insert(12,'average',dongcheng)
grouped = data['average'].groupby(data['local'])
print(grouped.mean().keys())
plt.bar(list(grouped.mean().keys()),list(grouped.mean().values))
plt.show()


#房屋面积和价格的分析
plt.figure(figsize=(30,10))
plt.subplot(1,2,1) #一行两列第一个图
size = data.iloc[:,5]
price = data.iloc[:,9]
plt.scatter(size,price)
plt.xlabel('房屋面积')
plt.ylabel('价格')

plt.subplot(1,2,2) #一行两列第一个图
plt.title('面积统计',fontsize=20,)
plt.hist(size,bins = 15) #bins指定有几条柱状
plt.xlabel('房屋面积')
plt.show()




#title词云分析
title = data.iloc[:,2]

color_mask = imread("123.jpg") #读取背景图片,

title = str(title)
for ch in "'\n'' '!?。。"#$%&'()*+,-/:;<=>@[\]^_`{|>}~⦅⦆「」、、〃》「」『』【】〔〕〖〗〘〙〚〛〜〝〞〟〰〾〿–—‘’‛“”„‟…‧﹏.":
    title = title.replace(ch,"")
# 生成词云
ls = jieba.lcut(title)
txt = " ".join(ls)
a = wordcloud.WordCloud(font_path = "msyh.ttc", width = 1000, height = 700, background_color = "black",mask=color_mask,)
a.generate(txt)
a.to_file("title.png")

Python链家租房信息爬虫和高德地图展示_第3张图片

Python链家租房信息爬虫和高德地图展示_第4张图片

Python链家租房信息爬虫和高德地图展示_第5张图片

3.高德地图展示

这部分去高德API示例中心找找就有相应结果我直接贴出代码


    
        
        
        
        毕业生租房
        
        
        
        
        
        
        
    

    
        
公交+地铁 地铁

Python链家租房信息爬虫和高德地图展示_第6张图片

 

 

你可能感兴趣的:(个人实战)