環境:mysql5.1.67-log
操作步驟:
1、檢查python是否支援mysql
如果出現:ImportError: No module named MySQLdb則說明python尚未支援mysql,需要手工安裝,請參考步驟2;如果沒有報錯,請調到步驟3
2、python安裝mysql支援
安裝完以後再次運作步驟1,檢查python是否已經支援mysql
如果還有問題您可以嘗試:LC_ALL=C pip install mysql-python
如果依然報錯:error: Python.h: No such file or directory
您可以嘗試先安裝python-devel:
3、建立資料庫和表
注意:
a)、建立資料庫的時候加上DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci,這樣才不至于出現亂碼。我就因為這個問題折騰了很久。
b)、資料庫表的編碼為utf8
4、設定mysql配置資訊
settings.py中添加如下配置項
5、修改pipelines.py
修改完的結果如下,需要注意的pipelines.py中定義了兩個類。JsonWithEncodingCnblogsPipeline是寫入json檔案用的,而MySQLStoreCnblogsPipeline(需要記住,後面會用到哦!)才是寫入資料庫用的。
MySQLStoreCnblogsPipeline類做的主要功能有
a)、讀取資料庫配置檔案,并生成資料庫執行個體,主要通過類方法from_settings實作,
b)、如果url不存在則直接寫入,如果url存在則更新,通過自定義的方法_do_upinsert實作,
c)、確定url唯一性的md5函數_get_linkmd5id 。
6、啟用MySQLStoreCnblogsPipeline類,讓它工作起來
修改setting.py配置檔案,添加MySQLStoreCnblogsPipeline的支援
至此,所有的需要修改的檔案都修改好了,下面測試看結果如何。
7、測試
檢視資料庫結果:
至此,scrapy抓取網頁内容寫入資料庫的功能就已經實作了。然而這個爬蟲的功能還太弱小了,最基本的檔案下載下傳、分布式抓取等都功能都還不具備;同時也試想一下現在很多網站的反爬蟲抓取的,萬一碰到這樣的網站我們要怎麼處理呢?接下來的一段時間裡我們來逐一解決這些問題吧。随便暢想一下,如果爬蟲足夠強,内容足夠多;我們是不是可以打造一個屬于自己的垂直搜尋引擎呢?想想就興奮,盡情YY去吧!!!