python採集鏈家二手房信息

 

都說現在的房價很高,具體有多高呢,我們一起來看看。

 

現在網上關於房子的價格以及交易信息魚龍混雜,與實際情況相差比較大,目前鏈家平臺的數據應該是相對比較可靠的,所以這次我們就打算去鏈家爬一爬。

 

說到爬蟲,前面也有說過,無非就三個主要的步驟

 

1、獲取目標網頁或接口

 

2、從目標網頁或接口中解析並提煉出你要的數據字段

 

3、數據保存

 

我們今天就以鏈家平臺上北京地區二手房爲例,首先是打開目標網頁。

https://bj.lianjia.com/ershoufang/

網頁下面有分頁,一共提供了 100 頁數據,也就是說這 100 頁都是我們的目標網頁,所以第一件事就是要獲取到總頁數。

 

打開開發者模式可以看到,有個字段 totalPage 字段,這個字段就是總頁數,如下圖。

 

 

有了總頁數之後呢,接下來就是要對這 100 個頁面循環解析了,把我們要的字段和數據都解析出來。

 

爲了獲取更詳細的數據,這裏我們進入到詳情頁去解析數據,同樣打開開發者模式,看到有總價 total(總價)、unitPriceValue(單價)、areaName(位置)等字段,這些就是我們要獲取的主要字段。

 

 

解析得到字段數據後,就要把數據保存起來,保存數據的方式一般有保存到數據庫(Mysql、MongoDB)和保存到本地文件(txt、excel、csv),爲了方便起見,這裏我們將數據只保存到本地 csv 文件。

 

 

上面說的就是這個爬蟲的大致過程,下面是一段主要代碼,在公衆號後臺回覆關鍵字【鏈家】可獲取完整代碼,有需要 csv 文件數據的也可以後臺私信聯繫我哈。

 

    def getContent(self, url):
        totalPage = self.getTotalPage(url)
        totalPage = 2 #爲了方便調試,我這裏把總頁數寫死了
        # 循環處理每個目標頁面
        for pageNum in range(1, totalPage+1 ):
            url = "https://bj.lianjia.com/ershoufang/pg{}/".format(pageNum)
            print("正在獲取第{}頁數據: {}".format(pageNum,url))
            response = requests.get(url, headers = self.headers)
            soup = BeautifulSoup(response.text, "html.parser")
            links = soup.find_all("div", class_ = "info clear")
            for i in links:
                link = i.find("a")["href"]
                detail = self.parseDetail(link)
                self.datas.append(detail)
                #爲了防止反爬限制休眠1s
                time.sleep(1)

        # 數據存儲到csv文件中
        data = pd.DataFrame(self.datas)
        # 自定義字段
        columns = ["小區", "戶型", "面積", "價格", "單價", "朝向", "電梯", "位置", "地鐵"]
        data.to_csv("./lianjiaData.csv", encoding='utf_8_sig', index=False, columns=columns)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章