Python爬取深圳租房信息

@Author:Runsen
@Date:2020/6/19

人生最重要的不是所站的位置,而是內心所朝的方向。只要我在每篇博文中寫得自己體會,修煉身心;在每天的不斷重複學習中,耐住寂寞,練就真功,不畏艱難,奮勇前行,不忘初心,砥礪前行,人生定會有所收穫,不留遺憾 (作者:Runsen )

作者介紹:Runsen目前大三下學期,專業化學工程與工藝,大學沉迷日語,Python, Java和一系列數據分析軟件。導致翹課嚴重,專業排名中下。.在大學60%的時間,都在CSDN。決定今天比昨天要更加努力。
前面文章,點擊下面鏈接

我的Python教程,不斷整理,反覆學習

1、前言

在某日夏天的夜晚、突然有妹子加我微信,原來竟然叫我幫忙寫作業。

對於,我這個屌絲來說,還是花個半小時幫忙搞定下。爬取的網站又是鏈家網,你看我直接不是早已寫成博客了嗎?

我想對鏈家網說:鏈家網求你不要再害大家爬你的,真的讓廣大學生都是討厭你。

爬取的鏈接是:https://sz.lianjia.com/zufang/

什麼租房經紀人成交數據有嗎?我看老師都是傻傻的不知道亂搞一通。難爲是我啊?沒有的東西爬了毛?

2、明確爬取的信息

在鏈家網的租房信息中,有如下的信息,我都圈出來了。

明確爬取的信息,分別有整租,我就叫類型算了。新城花園就叫名稱, 面積就是101,朝向南,

3室1廳1衛就叫房間數,價格每個月1800,真貴。反正我這種窮人要不起。

3、 Requests訪問鏈接

Requests庫就是發請求的庫,需要加上請求頭,這樣就不用禁止了。

根據每個頁面的網址發現就是換了一個pg參數。比如,第一頁的網址是https://sz.lianjia.com/zufang/pg0

那麼第二頁就是https://sz.lianjia.com/zufang/pg1,那麼就是傻瓜式構造。我們爬它個100頁,代碼如下。

for i in range(1, 101):
     page_url = 'https://sz.lianjia.com/zufang/pg{}'.format(i)
     res = requests.get(page_url, headers=headers)

4、 xpath解析內容

返回的頁面就需要解析,我經常用的說xpath,至於bs4趕緊忘記算了。

具體解析過程如下圖所示。

5、保存數據

我們選擇用csv來保存數據,通過with open('demo.csv', 'a+') as f進行創建csv,然後通過f.write進行寫入爬取的數據。

最終保存數據如下圖所示。

6、全部代碼

'''
@Author: Runsen
@微信公衆號: 潤森筆記
@博客: https://blog.csdn.net/weixin_44510615
@Date: 2020/6/27
'''
import requests
from lxml import etree

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
with open('demo.csv', 'a+') as f:
    f.write(
        '類型' + ',' + '名稱' + ',' + '地點' + ',' + '面積' + ',' + '朝向' + ',' + '房間數' + ',' + '價格' + '\n')
    for i in range(1, 101):
        page_url = 'https://sz.lianjia.com/zufang/pg{}'.format(i)

        res = requests.get(page_url, headers=headers)
        # 這裏千萬不要判斷res的狀態碼200
        page = etree.HTML(res.text)
        content = page.xpath("//a[@class='content__list--item--aside']/@title")

        where1 = page.xpath("//p[@class='content__list--item--des']/a[1]/text()")
        where2 = page.xpath("//p[@class='content__list--item--des']/a[2]/text()")
        where3 = page.xpath("//p[@class='content__list--item--des']/a[3]/text()")
        squares = page.xpath("//p[@class='content__list--item--des']/text()[5]")
        decorates = page.xpath("//p[@class='content__list--item--des']/text()[6]")
        nums = page.xpath("//p[@class='content__list--item--des']/text()[7]")
        Prices = page.xpath("//span[@class='content__list--item-price']/em/text()")
        for j,w1,w2 , w3,s,d, n, Price in zip(content, where1, where2,where3, squares, decorates,nums,Prices):
            type = j.replace("·", " ").split(" ")[0]
            name = j.replace("·", " ").split(" ")[1]
            location = w1+ w2 + w3
            square = s.replace("\n", "").replace(" ", "")
            decorate =d.replace(" ", "")
            num = n.replace("\n", "").replace(" ", "")
            price = Price+ "元/月"
            print("正在寫入 :" + type + ',' + name + ',' + location + ',' + square + ',' + decorate + ',' + num + ',' + price +  '\n')
            f.write(type + ',' + name + ',' + location + ',' + square + ',' + decorate + ',' + num + ',' + price +  '\n')


最後對不起,我不想寫一個word文檔,最近我連博客都沒有寫, 看化工一連串公式都快不行了,只求及格。最後還是寫一篇博客記錄下。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章