1. 程式人生 > >django+spider簡易爬蟲搭建

django+spider簡易爬蟲搭建

/// 部落格遷移:http://blog.timeash.cn

今天有空,記錄一下搭建爬取鏈家北京二手房房價的過程,其目的是為了記錄每套房源的房價調整過程。我記得12~13年的時候,鏈家app是可以看到每套房源的價格波動的,現在的app不行了。


工程搭建

python django spider

  • 建立django 工程
django-admin startproject houseSpider 
cd houseSpider
python manage.py startapp dbmodel # 這裡增加一個app,用於資料庫操作
  • 建立 spider
scrapy startproject lianjiaSpider

* 這兩個命令非常相似,scrapy整體框架實現上與Django框架原理很相似,兩者都強調鬆耦合,高度的抽象使程式設計簡單、簡潔化,與python設計理念是一致的 *

讓spider爬去的資料存入資料庫

django給我們提供ORM模型極大的方便了我對資料庫的操作,現在我要做的是讓spider的item直接使用models.py,之前的部落格已經有了該怎麼操作–> Django的models.py在外部獨立使用 <–
1. 將建立的django專案拷貝到爬蟲專案中

  • houseSpider是網站,裡面有dbmodule,houseSpider,其餘的檔案是爬蟲檔案,不要動他們。

    這裡寫圖片描述
    這時,我們發現spider 有一個settings.py , django裡也有一個settings.py,這兩個檔案可以合併
    • 建立一個爬蟲
scrapy genspider ljershoufang 'bj.lianjia.com'
  • 注意下面的這句話
os.environ['DJANGO_SETTINGS_MODULE'] = 'houseSpider.houseSpider.settings'

這句話需要在每個爬蟲里加上,要不然是用不了models的

大概的方法是這樣的,中間有寫細節問題,我沒有及時記錄,記不清了。當網站可以運行了,我們就要考慮資料處理的問題了。


資料處理

每日爬去的資料大概有25000左右,我想做的是跟蹤每個房源的價格,比如今天200萬,明天190萬,後臺220萬,這種都需要對比的。開始的方法是這樣的。
* 原始資料,沒有經過任何的加工處理,直接存入資料庫,查詢的時候動態計算。結果耗時是巨大的,展示2000條資料需要大概10分鐘,不能忍。
優化1. 開啟n個執行緒,把所有的資料分n片,各種group by 然後彙總結果,期間學習了不少多執行緒的知識,展示2000條資料大概5分鐘,不能忍。
優化2. 爬去資料的時候,後臺自己處理。查詢資料不做任何計算。展示2000條資料1秒左右。
結果展示
這裡寫圖片描述

這樣,基本能用了。您可以訪問小小房蟲 感受一下