天天看點

A超級簡單!用Python爬取租房資訊

這裡以小豬短租北京區域為例,展示如何爬取租房資訊,為北京居住的小夥伴們提供便利的資訊比對,找到合适自己的房子,哈哈!!!

A超級簡單!用Python爬取租房資訊

打開小豬短租的北京區域的頁面,從清單頁點進第一個詳情頁,我們需要爬取如下資訊:

A超級簡單!用Python爬取租房資訊

在這裡我們需要用到requests,BeautifulSoup兩個主要函數,time函數是用來控制通路的頻率,設定為兩秒鐘爬取一次,以免被反扒程式禁止。

我們用一個for循環和格式化的輸入語句來爬取前5個清單頁的内容:

難點是如何定位到我們需要的元素,比如我們要知道第一個資訊的詳情頁面,需要在頁面上右鍵點選後選擇:‘檢查’

A超級簡單!用Python爬取租房資訊

會顯示如下的界面,可以看到詳情頁面的元素是div.result_btm_con.lodgeunitname

我們篩選這個元素是唯一的就可以定位到詳情頁面的資訊,這裡可以采用print函數來幫助确認唯一性,其他的類似标題,房東資訊,日租金等資訊也是這樣定位的。

A超級簡單!用Python爬取租房資訊

例如日租金資訊:

A超級簡單!用Python爬取租房資訊

對應代碼如下:

這裡我們用到了BeautifulSoup的select函數

值得注意的是我們要構造一個字典,将爬取的放入字典以備分析,這個會在後面的資料分析裡面去使用,這裡隻講如何爬取資訊

完整詳細代碼如下:

import requests
from bs4 import BeautifulSoup
import time
urls = ['http://bj.xiaozhu.com/search-duanzufang-p{}-0/'.format(str(i)) for i in range(5)]  #抓取前5頁資訊

def link(urls):
    first_wb_data = requests.get(urls)                          #用requests函數抓取頁面
    time.sleep(2)                                               #每隔2秒抓取
    soup = BeautifulSoup(first_wb_data.text,'lxml')             #導入BeautifulSoup讀取
    next_url = soup.select('div.result_btm_con.lodgeunitname')  #找到詳情頁面連結
    for next_url in next_url:
        next_url = next_url.get('detailurl')                    #提取目前清單頁面的所有詳情頁面連結
        get_detail_url(next_url,data=None)                      #調用抓取詳情頁面内容的函數

def get_detail_url(url,data=None):                              #抓取詳情頁面内容的函數
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text, 'lxml')
    title = soup.select('div.con_l > div.pho_info > h4 >em')    #抓取标題
    address = soup.select('div.con_l > div.pho_info > p')       #抓取位址
    price = soup.select('div.day_l > span')                     #抓取價格
    imgs = soup.select('img#curBigImage')                       #抓取圖檔
    picture = soup.select('div.member_pic > a > img')           #抓取圖檔
    name = soup.select('a.lorder_name')                         #抓取房東名字
    sex = soup.select('div.w_240 > h6 > span')                  #抓取房東性别

    for title,address,price,imgs,picture,name,sex in zip(title,address,price,imgs,picture,name,sex):   #将爬取的資訊放入字典
        data = {
            'title':title.get_text(),
            'address':address.get('title'),
            'price':price.get_text(),
            'imgs':imgs.get('src'),
            'picture':picture.get('src'),
            'name':name.get('title'),
            'sex':sex.get('class'),
        }
        print(data)


for url in urls:
    link(url)
           

爬取完成後的資訊如下:

A超級簡單!用Python爬取租房資訊

希望大家都找到自己心儀的房子,如有不正确的地方請大家指正,輕拍:)