成都房價(jià)現(xiàn)在多少?和北京差距很大嗎?Python爬取了四萬套房源!
作為一個(gè)技術(shù)人員,決定用技術(shù)解決這個(gè)疑問。我們用Python爬取了貝殼網(wǎng)上4萬多套的成都在售房源,告訴你最真實(shí)的成都房價(jià)。
爬蟲工作原理
在貝殼網(wǎng)上,成都的在售房源按照區(qū)域與地鐵線這兩個(gè)方式做了劃分,為了更好的了解各區(qū)域房價(jià),我們選擇了抓取各區(qū)域板塊的數(shù)據(jù)。然后再爬取了各板塊內(nèi)所有的房源數(shù)據(jù),除了價(jià)格外,還有戶型、朝向、電梯、樓層等信息。
所有信息都以Excel形式導(dǎo)出,再通過分析計(jì)算得出了成都的房價(jià)水平。
房源數(shù)據(jù)分析
本次共爬取49328套成都二手房信息,剔除掉無效的車位信息后,共計(jì)收集了有效信息46980條。
值得注意的是,金牛區(qū)不僅僅是在售二手房最多,人口老齡化問題也是幾大區(qū)里比較嚴(yán)重的。
各區(qū)域平均房價(jià)如下圖(單位:元/平米)
高新區(qū)與天府新區(qū)這兩大功能區(qū)因近年成都的“南拓”政策房價(jià)直線上漲,均價(jià)紛紛沖破1.8萬元每平米,幾乎就要徹底超越傳統(tǒng)的五大主城區(qū)了。
成都單價(jià)最貴十大豪宅:
文末知識(shí)點(diǎn)摘要:Python——Cookie保存到本地
方法一:
結(jié)合cookielib及urllib2,Python2時(shí)期比較常用的方法,年代比較久遠(yuǎn)了。個(gè)人覺得太麻煩,改用requests.
需要注意的是cookielib在python3中已經(jīng)改成了http.cookiejar
保存cookie
方法二:
使用requests.cookie
讀取cookies
在這里我用的是LWPCookieJar保存在txt文件中,還有個(gè)是MozillaCookieJar,都是由FileCookieJar 派生而來,實(shí)現(xiàn)了save()方法,而FileCookieJar 沒有實(shí)現(xiàn)save()
- MozillaCookieJar (filename,delayload=None,policy=None):從FileCookieJar派生而來,創(chuàng)建與Mozilla瀏覽器 cookies.txt兼容的FileCookieJar實(shí)例。
- LWPCookieJar (filename,delayload=None,policy=None):從FileCookieJar派生而來,創(chuàng)建與libwww-perl標(biāo)準(zhǔn)的 Set-Cookie3 文件格式兼容的FileCookieJar實(shí)例。
方法三:
將cookie字典弄成字典形式然后pickle或者json寫入文件中
存儲(chǔ)cookie
- import requests,json,pprints = requests.session()s.headers = {...}a = s.get("https://www.baidu.com")cookies = requests.utils.dict_from_cookiejar(s.cookies)with open(".cook.txt", "w") as fp:json.dump(cookies, fp)pprint.pprint(cookies,width=5)
讀取cookie
- with open(".cook.txt", "w") as fp:load_cookies=son.load(fp)session.cookie = requests.utils.cookiejar_from_dict(load_cookies)
方法四:
將requests.cookie設(shè)置為LWPCookieJar、或MozillaCookieJar保存session = requests.Session()#創(chuàng)建個(gè) LWPCookieJar對象session.cookies = LWPCookieJar(filename='cook.txt')s.get('https://www.baidu.com/',headers=headers)session.cookies.save(ignore_discard=True, ignore_expires=True)#如果save()時(shí)沒有寫filename參數(shù),則默認(rèn)為實(shí)例化LWPCookieJar時(shí)給的文件名
save()方法的兩個(gè)重要參數(shù)
- ignore_discard: save even cookies set to be discarded.
- ignore_expires: save even cookies that have expired.The file is overwritten if it already exists
ignore_discard的意思是即使cookies將被丟棄也將它保存下來,ignore_expires的意思是如果cookies已經(jīng)過期也將它保存并且文件已存在時(shí)將覆蓋
總結(jié)方法二和方法四可以看出,就是要將cookie轉(zhuǎn)換成然后save()
簡單介紹下cookielib模塊作用,科普下實(shí)現(xiàn)cookie知識(shí)
python3中將cookielib模塊改為了http.cookiejar cookielib模塊的主要作用是提供可存儲(chǔ)cookie的對象,以便于與urllib2模塊配合使用來訪問Internet資源。例如可以利用本模塊 的CookieJar類的對象來捕獲cookie并在后續(xù)連接請求時(shí)重新發(fā)送。coiokielib模塊用到的對象主要有下面幾個(gè):CookieJar、 FileCookieJar、MozillaCookieJar、LWPCookieJar。其中他們的關(guān)系如下: