爬取鏈家租房信息


本次所以的要求來自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075

前言

在二手房網找房時,房屋物理信息(指房屋本身的信息,例如戶型、朝向、面積、裝修等固定的屬性。)、附屬信息、價格信息、周邊情況信息,哪一個才是年輕人關注的重點呢?

這次的租房房源數據來源於方天下(https://sh.esf.fang.com/house/i310/),用 Python 收集數據后制作成可視化圖形。

一、數據獲取

1.網站代碼分析:

首先這個網站有登陸功能,登錄網站,看看登錄前后前后是否有區別, 發現並無區別,爬蟲時可以無需模擬登陸:

需要爬蟲的數據為紅色方框部分,對應的內容和代碼:

2.代理IP

在爬取數據100條以后,網站需要驗證碼才可以登陸進去,此時可以考慮使用代理ip進行爬取,因為免費ip少之又少,並且時效性較短,用起來不太方便,本人用了班里同學爬取整個代理網站的ip並篩選好的代理ip使用,詳情可見鏈接:。

測試代理ip失效(txt格式保存到代碼路徑下)如下:

 

3.設置時間間隔

 爬取時間過快也會導致被封ip風險性增加,設置一下時間間隔,代碼如下:

1 # 為了降低被封ip的風險,設置合理的爬取間隔,每爬20頁便隨機歇1~5秒。
2 if page%20 == 0:
3 time.sleep(random.random()*5)

二、數據爬取

 1 from bs4 import BeautifulSoup
 2 import requests
 3 import pandas
 4 from simple_proxy import ProxyIPWormXiCi;
 5 from header import proxy, Header;
 6 
 7 def dealwithKey(info):
 8     for k in info:
 9         if '' in k:
10             info['樓層']=info.pop(k)
11         elif '進門' in k:
12              info['朝向']=info.pop(k)
13         elif '程度' in k:
14              info['裝修']=info.pop(k)
15 
16 def get_house_detail(url):
17     try:
18         info={}
19         info_adj={}
20         res=requests.get(url)
21         soup=BeautifulSoup(res.text,'html.parser')
22         # soup = proxy(main_url);
23         info['標題']=soup.select('.title h1')[0].text.strip()
24         info['總價']=soup.select('.price_esf ')[0].text.strip()
25         for item  in soup.select('.trl-item1'):
26             key = item.select('.font14')[0].text.strip()
27             value=item.select('.tt')[0].text.strip()
28             info[key]=value
29             dealwithKey(info)
30         return info
31     except Exception:
32         print("此頁異常:{}".format(url));
33         return None;
34 
35 
36     #用item做為循環變量名,代表當前網頁class為trl-item1的所有標簽節點
37     #key表示item標簽下所有class為font14的標簽節點文本內容
38     #print(key)
39     #value示item標簽下所有class為tt的標簽節點文本內容
40     #將info里面所有key賦值給value
41    # k=#創建列表變量k,為了統一字段(有的“樓層”,有的“中層(地20上共3層”)
42     #info_adj= #利用dict(zip(list1,list2))創建新的字典(調整字段后的)
43     #返回info_adj
44 
45 def dfb(main_url, houseary):
46     res = requests.get(main_url, headers=Header().headers) #獲取上海在售二手房源網頁首頁(http://esf.sh.fang.com/)的響應包,命名為res
47     soup = BeautifulSoup(res.text, 'html.parser')  # 創建BeautifulSoup對象對res響應包進行解析,結果命名為soup
48     # soup = proxy(main_url);#使用代理ip爬取
49     domain1 = 'http://esf.sh.fang.com/'
50     for house in soup.select('.shop_list dl dd h4 a'):#循環遍歷獲取網頁首頁所有房源詳細內容頁的url,循環變量名為house(提示:檢查定位路徑定位查找的節點是否為空)
51         url = domain1+house['href']#利用domain與存儲房屋詳細內容的相對url的標簽節點構建房屋的url
52         # print(url)#打印輸出查看url
53         #                 dfb1(url)
54         info = get_house_detail(url)
55         print("info:{}".format(info));
56         if info != None:
57             houseary.append(info)
58     return houseary;
59 
60 if __name__ == "__main__":
61      main_url = 'http://esf.sh.fang.com/house/i3';
62      xici_ip = ProxyIPWormXiCi("http"); #調用同學寫好的代理ip,本人直接用 
63      xici_ip.get_pages_ips(xici_ip.start_page, );
64     houseary = [];
65     for i in range(1,100):
66         print("當前第:{}".format(i));
67         houseary = dfb(main_url + str(i) + "/", houseary);
68         if len(houseary) == 0:
69             print("稍后再試,請從第{}頁開始".format(i));
70             break;
71         df = pandas.DataFrame(houseary)#將獲取到的所有房屋信息轉換成數據框的結構
72         df.to_csv('house.csv', mode="a", encoding="ANSI");

這是我獲取數據,總共12479條:

三、數據分析

1. 地理位置

找二手房房,第一個看的肯定是地理位置。畢竟每個人都想住的地方離公司近一些,這樣就不用花費太多時間在通勤上。雖然大家都默認在一線城市工作的通勤時間單程普遍為1小時左右。但是如果能夠住的近一點,不用花那么多時間在路上,這樣幸福感肯定會提高。

先來看一個總體二手房價格水平:

  • 靜安&盧灣&黃浦&海淀地區,租房價格是最貴的,平均價格皆接近十萬元(每平方)
  • 閔行&寶山&嘉定&閔行&松江&青浦&奉賢,因為浦東新區,其房租價格也不便宜,平均皆接近五萬元(每平方)
  • 盧灣&閘北等地區,作為新崛起的著名城市地區,其則便宜有些可以達到舊中心價格,也有和浦東新區差不多

 

 

 

由上圖可得,各地區的均價基本都在20000以上,其中閔行的房源數最多,但均價中等,為46959元/平方,這或許與閔行作為商業區有關系,2018年,實現社會消費品零售總額942.14億元,比2016年增長5.6%。至年末,閔行區共有各類市場113個。閔行區現有1個國家級社區商業示范社區(閔行區百聯南方購物中心);4個市級社區商業示范社區(閔行區百聯南方購物中心、七寶社區商業中心、春申萬科城商業街、閔行區莘庄鎮仲盛世界商城社區);4個上海特色商業街區(虹梅路休閑街、七寶老街、十尚坊休閑餐飲街、虹泉路韓國街)。

由上圖可以看出,均價在40000-60000之間的房屋數量最多,同時15000-20000這個價位之間房屋數少的可憐。

據上海市統計局的數據,2018年全市居民月人均可支配收入為64183元。。

上海二手房的出售收入比,驚人地接近60%。很多人一生一大半的收入,都花在了買房上,人生就這樣被鎖定在貧困線上。

統計數據也表明,上海買二手房人群收入整體偏低。47%的人,年薪在10萬以下。就這樣,第一批90后扛過了離婚、禿頭、出家和生育,終於還是倒在了買房面前。

2. 戶型

年輕人在看房屋物理信息的時候,首先關注的可能是戶型。因為房屋戶型的格局在很大程度上決定了租客的生活方式。例如,如果房子是4室0廳,那說明,這個房子會是比較擁擠和陰暗的,在洗漱問題上會比較緊張;如果房子3室一廳,帶廚房和衛生間,帶陽台,那就說明這個房子的采光比較好,整體明亮寬敞,是一個比較合適的居住環境;有的房屋不帶廚房,那就說明之后做飯就不太可能了。

所以有過租房經驗的年輕人,能夠從戶型上看出一些房屋的真實居住情況;而對追求安靜舒服想要自己的控件的租客來說,1室戶是最好的選擇。由於政策對群租房的限制,所以現在房子的戶型多為3室一廳,最多4室。

當然,隨着越來越多的租客想要獨立的空間,1室戶的房源也越來越多。

3. 樓層

樓層其實和電梯的關聯度比較高。老小區一般樓層較低,但是沒有電梯。但是新小區的話,樓層高,有電梯。所以如果有電梯的話,年輕人對樓層的要求度不高。反而對電梯的要求度更高,畢竟現在誰願意爬樓梯呢?

當然也會有人考慮某些樓層段的房屋空氣質量不好,但這些在租房的情況下是少數,更多的是買房的時候會考慮中低層的樓房。

 

4. 朝向/裝修

大家都知道房子要坐北朝南,這樣才能有陽光、采光好、溫度好。但對於租房的年輕人來說,房子的朝向似乎並沒有那么重要,畢竟大家白天更多時間都在公司上班,關心朝向的唯一作用可能就是好不好曬衣服。但也沒有誰特意選擇某一個朝向的房屋。

而且現在在建造房子的時候,樓棟間的間隔都經過計算,不管哪個方向的房屋,都不存在因為朝向不好就非常潮濕陰暗的問題。畢竟現在窗戶大、有空調就已經能解決這兩個問題了。

關於裝修,現在租房平台上的房源的裝修都是已經裝修過,至少看的過去。對於是精裝還是簡裝,相信大部分年輕人還是更關心精裝比簡裝貴多少錢。

總的來說,朝向和裝修都是租客關心的若因素。所以大部分租房平台並不會展示“裝修”這一信息。還有一點就是現在的裝修成本和裝修難度已經大大降低了,從淘寶上購買自己喜歡的裝飾物,參照一些照片,自己動手,不管是北歐風還是Ins風,都不是什么復雜的事情。

6.

 1  # -*- coding: utf-8 -*-
 2 import jieba  # 加載停用表
 3 import  pandas as pd
 4 from wordcloud import WordCloud 5 import matplotlib.pyplot as plt 6 # 分解 7 article = open("fuli.txt", "r", encoding='utf-8').read() 8 jieba.add_word('近地鐵') 9 jieba.add_word('精裝') 10 jieba.add_word('降價) 11 jieba.add_word('帶家電') 12 jieba.add_word('電梯') 13 jieba.add_word('采光') 14 jieba.add_word('出行方便') 15 jieba.add_word('拎包入住') 16 jieba.add_word('誠心出售') 17 jieba.add_word('戶型正') 18 jieba.add_word('花園') 19 jieba.add_word('急售') 20 jieba.add_word('樓層好') 21 jieba.add_word('1室1廳') 22 jieba.add_word('景觀') 23 jieba.add_word('隨時') 24 jieba.add_word('品質小區') 25 jieba.add_word('朝南') 26 jieba.add_word('低價') 27 jieba.add_word('視野闊') 28 jieba.add_word('房型正') 29 jieba.add_word('位置好') 30 jieba.add_word('綠化帶') 31 jieba.add_word('誠售') 32 jieba.add_word('產權') 33 jieba.add_word('環境安靜') 34 jieba.add_word('配套完善') 35 words = jieba.cut(article, cut_all=False) # 統計詞頻 36 stayed_line = {} 37 for word in words: 38 if len(word) == 1: 39 continue 40 else: 41 stayed_line[word] = stayed_line.get(word, 0) + 1 42 print(stayed_line) # 排序 43 xu = list(stayed_line.items()) 44 # print(xu) 45 #存到csv文件中 46 pd.DataFrame(data=xu).to_csv("fuli.csv",encoding="utf_8_sig")

 

 

 

7. 結論描述

  • 上海價格受地理因素嚴重影響,越靠近內環租房價格越貴。
  • 三四環附近如海淀、朝陽等區域,企業聚集人流量大,租房價格仍然居高不下
  • 對於買二手房一族,租房比較實惠的地方在豐台順義昌平等地區,並且最好離附近地鐵站有一定距離,借助共享單車或步行完成最后一公里路程,至少能給自己節省30%的經濟支出
  • 至於房屋朝向、高低樓層等因素,現在有其他因素(比如:空調,烘干機等工具)實在不必過多考慮

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM