濰坊房價鬧哪樣,且看且珍惜
找房產數據莫過於去權威的房地產網站,但經過查看,鏈家網、網易房產、搜狐房產等房產門戶網站在濰坊都沒有網站,所以選取了還算權威的安居客濰坊網站作為分析數據來源,使用requests+BeautifulSoup的方法對頁面進行抓取和數據提取。通過使用requests庫對安居客新房表頁進行抓取,通過BeautifulSoup對頁面進行解析,並從中獲取房源價格,面積,戶型,位置等等的信息。
一、導入程序中需要的各個包、庫和函數
import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport requestsfrom bs4 import BeautifulSoupimport time
二、抓取列表頁
開始抓取前先觀察下目標頁面或網站的結構,其中比較重要的是URL的結構。安居客的二手房列表頁面共有13個,URL結構為http://wf.fang.anjuke.com/loupan/all/p1/,其中wf表示濰坊,/loupan/是頻道名稱,p1是頁面碼。我們要抓取的是濰坊的新房頻道,所以前面的部分不會變,屬於固定部分,後面的頁面碼需要在1-13間變化,屬於可變部分。將URL分為兩部分,前面的固定部分賦值給url,後面的可變部分使用for循環
url = http://wf.fang.anjuke.com/loupan/all/page = (p)
三、設置表頭,防止被封
#設置請求頭部信息headers = {User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.11 (KHTML, like Gecko) Chrome/23.0.1271.64 Safari/537.11,Accept:text/html;q=0.9,*/*;q=0.8,Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3,Accept-Encoding:gzip,Connection:close,Referer:http://www.baidu.com/link?url=_andhfsjjjKRgEWkj7i9cFmYYGsisrnm2A-TN3XZDQXxvGsM9k9ZZSnikW2Yds4s&wd=&eqid=c3435a7d00006bd600000003582bfd1f}
使用for循環生成1-14的數字,轉化格式後與前面的URL固定部分拼成要抓取的URL。這裡我們設置每兩個頁面間隔1秒,這等於上了雙保險,抓取到的頁面保存在html中:
for i in range(1,14): if i==1: a=(url) r = requests.get(url=a) html = r.content else: i = str(i) a=(url+page+i+/) r = requests.get(url=a) html2 = r.contenthtml = html+html2time.sleep(1)
四、解析頁面,進行關鍵數據提取
頁面抓取完成後無法直接閱讀和進行數據提取,還需要進行頁面解析。我們使用BeautifulSoup對頁面進行解析。變成我們在瀏覽器查看源代碼中看到的樣子
wf = BeautifulSoup(html, html.parser)#提取房源總價price = wf.find_all(div, attrs={class : favor-pos})up = []for a in price: unitPrice = a.span up.append(unitPrice)#提取房源信息houseinfo = wf.find_all(div, attrs={class : infos})hi = []for b in houseinfo: house = b.get_text() hi.append(house)
五、創建數據列表,清洗數據,分割數據
houseinfo_split=pd.DataFrame((x.split(
) for x in house.houseinfo), index=house.index, columns=[小區名, 點評數, 位置, 價格, 戶型, 面積])print(houseinfo_split.head())
獲取的部分數據如下:
六、分析結果
這裡我們對房源的戶型情況進行匯總,看看濰坊在售新房的戶型分布情況:
在所有的戶型中數量最多的是2室1廳,其次為3室1廳,以及2室2廳。較小的1室1廳數量也較多,較大的戶型數量較少。另外,從在售戶型的分布中我們也可以推測房產的一些情況。房源面積分布情況,在所有房源中,數量最多的是50-100,其次為100-150。隨著面積增加數量減少。小於50的小面積房源也有一定數量的房源:
房源價格分布情況,按照價格4000以下,4000-5000,5000-6000,6000及以上進行分類,對於價格我就不說什麼了:
六、小結因為僅作探討,所以沒在數據分析上下太多功夫,其實還有很多數據沒有展示出來和更多數據等待著去挖掘,比如分析的是整個濰坊市的情況,還可以按照區縣和地區進行多方位、全形度、多維度的分析,這樣可能要花費很多的時間和精力,有興趣的可以自己探討下。而且,網站上的房產數據和線下還是有很大差距的,比如說價格,濰坊中海大觀天下,網上價格4900,但實際你去售房處看,沒有5600以上買不下來,奧文標價4300,其實真正去買在5000左右,這也許就是地產商的噱頭吧,吸引你去關注房價的一種手段,我非房地產行業,在這裡就不做更多探討了。
關注度因為評論太少,本著嚴謹的態度沒有貼出來,代表性不高,但是從營銷和用戶體驗的角度來看,安居客網站可以在廣告和列表頁的默認排序中應該給予單價4000-5000/m,面積100m2左右屬性的房源給予更高的權重,這個類別的房源可以吸引最多的用戶關注。
到此為止吧!!!!!
推薦閱讀:
※大數據計數原理1+0=1這你都不會算(四)No.52
※滴滴拼車路徑的優化
※零基礎學習Python數據分析:數據處理模塊Pandas使用(3)
※大數據下看打虎
※歡迎收藏丨6個免費數據源網站