最近北京的租房市場掀起了軒然大波,作為即將租房的人就順便練手下爬蟲北京的租房**。爬房價已經有很多人在做了,但我還是分享些不同思路給大家。
仔細看了下這三家**,自如在**頁面處用的是圖的顯示,鏈家和蛋殼都是字元,如若要爬自如就需要用影象識別的庫,當然數字只有0-9,不需要影象識別那麼高階只需要匹配0-9與頁面的background-position。
如-240px對應數字0
background-position:-240px ----0
background-position:-30px ----1
初級爬蟲當然是竟可能簡單了,所以自如排除。鏈家和蛋殼在網頁結構上差別不大,不過蛋殼不顯示頁面數量,你不知道什麼時候是最後一頁,這樣很容易出錯
進入正題開始爬蟲,鑑於資料比較少不超過一萬,沒必要在去配置scrapy框架的,如果你想也可啊。
這裡我選的維度是:標題、**、戶型、面積、瀏覽熱度。(做完我才發現其實房齡這個引數也很有趣,有需要的朋友可以加這個分析)。
流程思路:
獲取北京租房頁面(下,分割槽的連線,如昌平,朝陽。。。。。。
獲取分割槽的最大頁數,構造每頁的連線位址
解析每一頁,這裡我用的是xpath沒有用煲湯soup,谷歌瀏覽器的xpath工具十分便捷,開發工具定位所需要的網頁元素,右鍵即可複製出xpath
最後儲存到csv
詳細**及說明:
import requests
#可以設定時間不要訪問過於頻繁,或者做乙個**,博主找了幾個都不太穩定,在資料不大的情況下不偽裝ip那就用time訪問慢一丟丟了
import time
from lxml import etree
#json在解析當前頁面有多少房子時用,每個區的**最後一頁數量是不定的
import json
import csv
#獲取request頁面,偽裝瀏覽器
def response(url):
headers = ,{},{},{},{},{}\n".format(area,title,price,room_type,square,people_flow))
#print('當前為第'+str(i)+'of30')
except exception as e:
print( ' connecting error, retrying.....')
time.sleep(10)
return get_house_info(area, url)
def main():
url = ''
get_area(url)
if __name__ == '__main__':
main()
爬完的結果:
下一步就是資料分析了,待我這兩天看完pandas
北京租房房價
明光橋 學院南路15號院1號樓廳隔3000 安翔裡 安翔南里10號樓主臥陽台2800 次臥2500 次臥2500 上地 上地621小區次臥2300 隔明1600 朝陽北路 珠 馬嘉園107號樓主臥獨衛3700 二里莊 清華東路9號院次臥2900 學院路 學知園3號樓明隔2500 暗隔1500 西三旗...
北京租房心得
節後來京,找了一天房。座標沙河,沒有別的原因,就因為便宜。是否應叫做沙河租房心得,不重要了 意向是一居室或者大開間,別問為什麼不合租,5 6環之間,整租方便。先後自己找了好久,單身公寓確實是有可能不需要中介。但凡想要個小區房,那你就得找中介了。2000多的小一居和小3000的大一居,選了後者,不是有...
在北京租房的歷史
在帝都八年多,住過城裡小區,住過城郊村莊。現流水賬記錄一下。04年底去北京實習,住的公司幫租的小區房,在中關村東邊的知春裡東裡,房租乙個月2000,四個人,每人500元。那時實習費乙個月也只有1000,交了房租只能勉強夠吃飯。05年畢業後和同學找房,被中介騙了400元。當時人多有六個人,需要找兩居的...