成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

作為一個技術人員,決定用技術解決這個疑問。我們用Python爬取了貝殼網上4萬多套的成都在售房源,告訴你最真實的成都房價。

爬蟲工作原理

在貝殼網上,成都的在售房源按照區域與地鐵線這兩個方式做了劃分,為了更好的瞭解各區域房價,我們選擇了抓取各區域板塊的數據。然後再爬取了各板塊內所有的房源數據,除了價格外,還有戶型、朝向、電梯、樓層等信息。

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

所有信息都以Excel形式導出,再通過分析計算得出了成都的房價水平。

房源數據分析

本次共爬取49328套成都二手房信息,剔除掉無效的車位信息後,共計收集了有效信息46980條。

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

值得注意的是,金牛區不僅僅是在售二手房最多,人口老齡化問題也是幾大區裡比較嚴重的。

各區域平均房價如下圖(單位:元/平米)

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

高新區與天府新區這兩大功能區因近年成都的“南拓”政策房價直線上漲,均價紛紛衝破1.8萬元每平米,幾乎就要徹底超越傳統的五大主城區了。

成都單價最貴十大豪宅:

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

文末知識點摘要:Python——Cookie保存到本地

方法一:

結合cookielib及urllib2,Python2時期比較常用的方法,年代比較久遠了。個人覺得太麻煩,改用requests.

需要注意的是cookielib在python3中已經改成了http.cookiejar

保存cookie

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

方法二:

使用requests.cookie

讀取cookies

在這裡我用的是LWPCookieJar保存在txt文件中,還有個是MozillaCookieJar,都是由FileCookieJar 派生而來,實現了save()方法,而FileCookieJar 沒有實現save()

  • MozillaCookieJar (filename,delayload=None,policy=None):從FileCookieJar派生而來,創建與Mozilla瀏覽器 cookies.txt兼容的FileCookieJar實例。
  • LWPCookieJar (filename,delayload=None,policy=None):從FileCookieJar派生而來,創建與libwww-perl標準的 Set-Cookie3 文件格式兼容的FileCookieJar實例。
成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

方法三:

將cookie字典弄成字典形式然後pickle或者json寫入文件中

存儲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設置為LWPCookieJar、或MozillaCookieJar保存session = requests.Session()#創建個 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()時沒有寫filename參數,則默認為實例化LWPCookieJar時給的文件名

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

save()方法的兩個重要參數

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已經過期也將它保存並且文件已存在時將覆蓋

總結方法二和方法四可以看出,就是要將cookie轉換成然後save()

簡單介紹下cookielib模塊作用,科普下實現cookie知識

python3中將cookielib模塊改為了http.cookiejar cookielib模塊的主要作用是提供可存儲cookie的對象,以便於與urllib2模塊配合使用來訪問Internet資源。例如可以利用本模塊 的CookieJar類的對象來捕獲cookie並在後續連接請求時重新發送。coiokielib模塊用到的對象主要有下面幾個:CookieJar、 FileCookieJar、MozillaCookieJar、LWPCookieJar。其中他們的關係如下:

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!

關注,轉發,私信“01”即可獲取小編準備的零基礎學習資料一份!

成都房價現在多少?和北京差距很大嗎?Python爬取了四萬套房源!


分享到:


相關文章: