Python爬蟲建站入門手記(3):採集入庫

發表於2016-05-04

上回,我已經大概把爬蟲寫出來了。
我寫了一個內容爬蟲,一個爬取tag裡面內容連結的爬蟲
其實還差一個,就是收集一共有哪些tag的爬蟲。但是這裡先不說這個問題,因為我上次忘了 這次又不想弄。。
還有個原因:如果實際採集的話,直接用http://segmentfault.com/questions/newest?page=1這個連結 獲取所有問題,挨個爬就行。

進入正題

第三部分,採集入庫。

3.1 定義資料庫(or model or schema)

為了入庫,我需要在Django定義一個資料庫的結構。(不說nosql和mongodb(也是一個nosql但是很像關係型)的事)
還記得那個名叫web的app麼,裡面有個叫models.py的檔案,我現在就來編輯它。

內容如下:

都很直白,關於各個field可以看看 Django 的文件

然後,我需要告訴我的python_spider專案,在執行的時候載入web這個app(專案不會自動載入裡面的app)。

在INSTALLED_APPS裡面加入web:

下面,就可以用django自動生成資料庫schema了

現在,我~/python_spider目錄就產生了一個db.sqlite3檔案,這是我的資料庫。
把玩一番我的模型

以上操作結果正常,說明定義的models是可用的。

3.2 入庫

接下來,我需要把採集的資訊入庫,說白了,就是把我自己蜘蛛的資訊利用django的ORM存到django連線的資料庫裡面,方便以後再用Django讀取用於做站。

入庫的方法太多了,這裡隨便寫一種,就是在web app裡面建立一個spider.py, 裡面定義兩個蜘蛛,繼承之前自己寫的蜘蛛,再新增入庫方法。

程式碼如下:

  1. 這個地方寫得很笨,之前該在SegmentfaultQuestionSpider加上這個屬性。
  2. 建立或者獲取該提問的tags
  3. 建立或者獲取提問,採用sf_id來避免重複
  4. 把tags都新增到提問,這裡用*是因為這個方法原本的引數是(tag1, tag2, tag3)。但是我們的tags是個列表
  5. 測試的時候方便看看進度

然後,測試下我們的入庫指令碼

3.3 設定django.contrib.admin來檢視和編輯內容

為了更直觀的觀察我採集的資料,我可以利用django自帶的admin
編輯檔案

然後建立超級使用者

啟動測試伺服器

然後,我訪問http://192.99.71.91/admin/登入剛剛建立的賬號,就能對內容進行檢視和編輯了
Python爬蟲建站入門手記(3):採集入庫

OK, 今天的內容到此。
下一篇,是編寫django的view,套用簡單的模板來建站。

相關文章