北京房租到底有多高? | 爬取北京海淀区一居室租房信息
圖片來源:花瓣網(wǎng)
文章來源
人工智能與大數(shù)據(jù)生活
如需轉(zhuǎn)載,請聯(lián)系原作者授權
最近北京房租成了熱門話題,到底北京的房租有多高?
本次實戰(zhàn)是爬取北京海淀區(qū)一居室的租房信息,共爬取了300套房源信息,看一下北京的房租到底有多高?效果如下:
開發(fā)環(huán)境
環(huán)境:MAC + Python3.6
IDE:Pycharm
模塊:import requests、from bs4 import BeautifulSoup
爬取目標
本次爬取目標是北京海淀區(qū)一居室的租房信息,如下圖所示。這些信息主要包括標題,租金,小區(qū)名字,中介的頭像以及姓名。
爬取分析
本次需要爬取300套房源,但是某租房網(wǎng)站的每一頁信息只有30套,如下:
因此我們需要爬取10個網(wǎng)頁的信息,也就是爬取多個頁面。通過觀察,我們發(fā)現(xiàn)第二個網(wǎng)址是https://bj.lianjia.com/zufang/haidian/pg2l1/,第三個是https://bj.lianjia.com/zufang/haidian/pg3l1/,因此得出網(wǎng)址的規(guī)律是pg2l1的頁面以此加1。
根據(jù)上面的分析,我們只需使用一個for循環(huán)就可以得到10個頁面的信息,具體代碼如下。然后開始解析每一個頁面。
爬取一個頁面
解析靜態(tài)網(wǎng)頁信息三步即可完成:
第一步:
使用requests庫中的get方法解析頁面,但是為了防止被反爬蟲,建議使用headers進行模擬瀏覽器。否則你會得到下面的信息:
代碼如下:
`python`????#第一步:使用GET獲取頁面請求
????#獲取頁面信息
????headers?=?{
????????'User-Agent':?'Mozilla/5.0?(Macintosh;?Intel?Mac?OS?X?10_13_3)?AppleWebKit/537.36?(KHTML,?like?Gecko)?Chrome/65.0.3325.162?Safari/537.36'
????}
????data_url?=?requests.get(url,headers=headers)
第二步:
進行頁面解析,找到需要的信息。本次使用的是BeautifulSoup庫。Beautiful Soup提供一些簡單的、python式的函數(shù)用來處理導航、搜索、修改分析樹等功能。它是一個工具箱,通過解析文檔為用戶提供需要抓取的數(shù)據(jù),因為簡單,所以不需要多少代碼就可以寫出一個完整的應用程序,具體代碼如下:
`python`????#第二步:開始解析頁面
????soup?=BeautifulSoup(data_url.text,'lxml')
????#print(soup)
第三步:
使用selector進行解析頁面,找到租房信息的詳細頁面。selector 定位需要的信息數(shù)據(jù),具體方法是鼠標放在圖片上,右鍵,檢查,copy-CSS SELECTOR。瀏覽器自動copy出來css樣式,具體代碼如下:
`python`???'''
????????使用selector進行解析頁面,找到租房信息的詳細頁面。
????????也就是進行頁面的跳轉(zhuǎn)
????'''
????#鼠標放在圖片上,右鍵,檢查,copy-CSS?SELECTOR
????#一定要去掉:NTH-CHILD(1)否則出差錯
????#?house-lst?>?li:nth-child(1)?>?div.pic-panel?>?a
????soup_selects?=?soup.select('#house-lst?>?li?>?div.pic-panel?>?a')
????print(soup_selects)
????for?soup_select?in?soup_selects:
????????#?selector返回的是一個列表,有很多屬性信息,目的是鏈接,所以選擇href
????????href_url?=?soup_select.get("href")
????????#第三步,找到詳細頁面進行解析
????????#print("得到詳情頁面信息")
????????#print(href_url)
????????get_detail_info(href_url)
爬取目標頁面信息
由于詳細的房租信息也是一個新的頁面,所以需要進行再次的重復上面的三步,具體代碼如下:
`python`????#第一步:?使用URL獲取頁面
????detail_url?=?requests.get(url)
????#第二步:使用BS4解析數(shù)據(jù)
????detail_soup?=?BeautifulSoup(detail_url.text,'lxml')
????#第三步:使用?selecter?定位需要的信息數(shù)據(jù)
????#獲取名稱
????#body?>?div:?nth?-?child(7)?>?div.title?-?wrapper?>?div?>?div.title?>?h1
????titles?=?detail_soup.select("body?>?div?>?div.title-wrapper?>?div?>?div.title?>?h1")
????#print("租房信息的標題是{}".format(titles))
????#獲取地址
????addresses?=?detail_soup.select("body?>?div?>?div.overview?>?div.content.zf-content?>?div.zf-room?>?p?>?a")
????#print("小區(qū)名字是{}".format(addresses))
????#獲取價格
????#body?>?div:nth-child(7)?>?div.overview?>?div.content.zf-content?>?div.price?>?span.total
????prices?=?detail_soup.select("body?>?div?>?div.overview?>?div.content.zf-content?>?div.price?>?span.total")
????#print("租房在海淀區(qū),一居室的價格是{}".format(prices))
????#獲取圖片
????##topImg?>?div.imgContainer?>?img
????images?=?detail_soup.select("#topImg?>?div.imgContainer?>?img")
????#獲取中介頭像
???#?body?>?div:?nth?-?child(7)?>?div.overview?>?div.content.zf?-?content?>?div.brokerInfo?>?a?>?img
????avartars?=?detail_soup.select("body?>?div?>?div.overview?>?div.content.zf-content?>?div.brokerInfo?>?a?>?img")
????#獲取中介姓名
????#body?>?div:nth-child(7)?>?div.overview?>?div.content.zf-content?>?div.brokerInfo?>?div?>?div.brokerName?>?a.name.LOGCLICK
????names?=?detail_soup.select("body?>?div?>?div.overview?>?div.content.zf-content?>?div.brokerInfo?>?div?>?div.brokerName?>?a.name.LOGCLICK")
????#獲取房東性別
????#sexs?=?address?=?detail_soup.select("#floatRightBox?>?div.js_box.clearfix?>?div.member_pic?>?div")
效果如下
到此,整個爬蟲流程完成,完美的爬出來想要的信息,然后就可以分析北京的房租了。
完
掃描下方二維碼加入【云計算學習交流群】,和志同道合的朋友們共同打卡學習吧~~
成為群成員,或拉人進群,
還有機會獲得免費贈書哦~~
投稿啦!!!
精彩繼續(xù)
CSDN作為國內(nèi)專業(yè)的云計算服務平臺,目前提供云計算、大數(shù)據(jù)、虛擬化、數(shù)據(jù)中心、OpenStack、CloudStack、機器學習、智能算法等相關云計算觀點、技術、平臺、實踐、云產(chǎn)業(yè)咨詢等服務。CSDN?公眾號也一直堅持「與千萬技術人共成長」的理念,深度解讀行業(yè)內(nèi)熱門技術與場景應用,致力于讓所有開發(fā)者保持敏銳的技術嗅覺、對行業(yè)趨勢與技術獲得更廣闊的認知。
文章題材
首先你需要關注我們的公眾號“CSDN云計算”,這樣你會更準確了解我們需要的文章風格;
側(cè)重于云計算領域相關的文章,可以是技術、運維、趨勢等方面的務實內(nèi)容;
原創(chuàng),要求文章有鮮明觀點和看法。
投稿須知
?稿費:根據(jù)原創(chuàng)性、實用性和時效性等方面進行審核,通過的文章會發(fā)布在本微信平臺。一經(jīng)采用,我們將支付作者酬勞。酬勞可能不多,這代表的是一個心意,更多是因為愛好,是有識之士抒發(fā)胸懷的一種方式;
字數(shù)要求:稿件字數(shù)以2K-8K為宜,少于2K或多于8K都會一定程度降低閱讀愉悅感;
投稿郵箱:lijy@csdn.net。或者添加微信表明來意,微信號:tangguoyemeng。請備注投稿+姓名+公司職位。
如果咱們的合作穩(wěn)定又愉快,還可以簽訂合同長期合作哦!
總結(jié)
以上是生活随笔為你收集整理的北京房租到底有多高? | 爬取北京海淀区一居室租房信息的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: dexpress 流程图_DevExpr
- 下一篇: 橄榄菜是什么?