03.06 僅用半小時,從Python爬取到BI可視化,告訴你深圳房價有多貴

我有個小外甥,今年準備畢業,在我的極力勸說下來到了深圳工作,那第一件事就是租房子了。

深圳的房價大家也知道,最近幾年漲的厲害,3萬一平都買不到什麼好房子,其實看到這個情況,我著實為下一代擔心,月入2W的應屆畢業生寥寥無幾,就是進了大廠賺到了錢,面臨的壓力也是非常大,最後買房就變成了掏空兩個家庭一輩子的事情。

僅用半小時,從Python爬取到BI可視化,告訴你深圳房價有多貴

今天是週五,閒來無事,我就用Python爬點深圳房價的數據,然後做出可視化分析分析吧。

僅用半小時,從Python爬取到BI可視化,告訴你深圳房價有多貴

來了就是深圳人哈哈哈哈

Python對於我的粉絲來說可能很簡單,大家都是做IT的,面對最簡單的語言不得大展身手?大家做可視化用什麼工具呢?其實python也能,但是可視化太醜了,還很麻煩,所以不考慮。

Pyecharts,Echarts,Highcharts...會點程序很重要阿,一個charts就能玩出這麼多花樣,但是他們最多算個圖表插件罷了,我還是喜歡用現成的工具,比如BI工具。說到BI,我不止一次地給你們推薦,今天就來做個實際操作。

FineBI是帆軟旗下的交互式數據可視化BI工具,可以快速地把數據轉化為各種漂亮的可視化圖表。

僅用半小時,從Python爬取到BI可視化,告訴你深圳房價有多貴

FineBI做出的駕駛艙

除此之外,FineBI這款商業分析工具還可以製作出更多漂亮的圖表,協作並共享自定義儀表板和交互式報表等,文末給你們送上它的下載地址,先看分析。

一、數據獲取

我們的數據來源是鏈接網上的信息,應該還挺全的,雖然最近它在裁員....

僅用半小時,從Python爬取到BI可視化,告訴你深圳房價有多貴

這就是我們需要的數據頁面了

爬取各個行政區房源信息,並數據保存為DataFrame,話不多說,直接上代碼:

<code>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">(.*?)/<code>


分享到:


相關文章: