一、如何在Python中使用MongoDB數(shù)據(jù)庫。
在Python中使用MongoDB的方法,其實(shí)和我們平時(shí)使用EXCEL的方法相類似。當(dāng)使用EXCEL時(shí)會(huì)經(jīng)歷以下步驟:①對(duì)EXCEL進(jìn)行命名;②在EXCEL中增加sheet工作簿;③輸入數(shù)據(jù);④對(duì)數(shù)據(jù)進(jìn)行分析,以表格、圖像等方式展現(xiàn)數(shù)據(jù)。
類似的,在使用MongoDB時(shí)也同樣會(huì)經(jīng)歷相似的四步:①給數(shù)據(jù)庫命名;②在文件下創(chuàng)建表單;③將數(shù)據(jù)放入數(shù)據(jù)庫中;④展示數(shù)據(jù)庫中的數(shù)據(jù)。
在進(jìn)行以上的步驟之前,還需要完成兩個(gè)準(zhǔn)備工作:
1)要想使用MongoDB同樣需要先引入第三方庫,和引入Request的方法一樣,首現(xiàn)輸入:import pymongo
2)與MongoDB客戶端進(jìn)行連接,輸入:client = pymongo.MongoClient('localhost',27017),其中l(wèi)ocalhost表示是在本地創(chuàng)建創(chuàng)建數(shù)據(jù)庫,27017表示本地端口(如果將MongoDB部署在網(wǎng)絡(luò)環(huán)境中,端口會(huì)有所改變)。
1.給數(shù)據(jù)庫命名
輸入的代碼為:A1= client['A2'],其中A1為在Python中的變量名稱,A2為對(duì)應(yīng)放入MongoDB數(shù)據(jù)庫中的名稱,為了便于管理,通常將兩者取同樣的名稱。如要爬取knewone的數(shù)據(jù),可以將數(shù)據(jù)庫命名為knewone,代碼寫為:knewone = client['knewone']。
2.在文件下創(chuàng)建表單
輸入的代碼為:B1= A1['B2'],這段代碼可以理解為在剛才創(chuàng)建的文件下創(chuàng)建表單。其中B1為Python中的變量名稱,B2為剛才創(chuàng)建文件的表單名稱。同樣的道理,為了方便,B1和B2的名稱最好相同。為了與EXCEL進(jìn)行類比,在寫代碼的過程中獲得熟悉感,可以將代碼寫為sheet1 = knewone['sheet1']。
3.將數(shù)據(jù)放入數(shù)據(jù)庫中
輸入的代碼為:B1.insert_one(data),其中B1為創(chuàng)建的表單,data為我們抓取的數(shù)據(jù),insert() 函數(shù)用于將指定對(duì)象插入列表的指定位置。
insert()方法語法:list.insert(index, obj)
index -- 對(duì)象obj 需要插入的索引位置。
obj -- 要插入列表中的對(duì)象。
4.展示數(shù)據(jù)庫中的數(shù)據(jù)
在之前Python學(xué)習(xí)筆記5中,已經(jīng)安裝了mongo插件,這個(gè)插件就是幫助我們直觀地去觀察所存儲(chǔ)的數(shù)據(jù)。
就如使用EXCEL一樣,我們通常會(huì)去篩選我們需要的數(shù)據(jù)和信息,在MongoDB中,常用的條件操作符有:
$gt: (>) 大于 ?-?
$lt :(<) 小于 -?
$gte :(>=) 大于等于 -?
$lte :(<= ) 小于等于 -?
lt表示less than
,gt表示greater than,e表示equal,n表示not。
通過以上條件操作符,便可從眾多數(shù)據(jù)中篩選出我們所需要的信息。
二、實(shí)戰(zhàn)
存儲(chǔ)學(xué)習(xí)筆記3中所爬取的小豬短租相關(guān)數(shù)據(jù),并從中篩選出價(jià)格小于等于300的數(shù)據(jù)。
1.導(dǎo)入pymongo第三方庫

2.給數(shù)據(jù)庫命名并創(chuàng)建表單
創(chuàng)建一個(gè)名字為xiaozhu_bj的數(shù)據(jù)庫,并在數(shù)據(jù)庫中創(chuàng)建一個(gè)名字為sheet1的表單。

3.插入數(shù)據(jù)
將抓取的data數(shù)據(jù)存入sheet1中。

在Pycharm右側(cè)的Mongo Explorer中,選擇xiaozhu_bj數(shù)據(jù)庫中的sheet1表單,便能查看所有存儲(chǔ)數(shù)據(jù)。

存入數(shù)據(jù)庫中的數(shù)據(jù)如下:

4.篩選出價(jià)格小于等于300的數(shù)據(jù)
利用for循環(huán),篩選出價(jià)格≤300的數(shù)據(jù)。

如果輸出的數(shù)據(jù)為空的情況,原因是在之前爬取數(shù)據(jù)時(shí),沒有定義價(jià)格的數(shù)據(jù)類型,需要將價(jià)格數(shù)據(jù)定義為整數(shù)后,才能進(jìn)行大小判定。

最終篩選出的數(shù)據(jù)結(jié)果如下:

完整代碼如下:

總結(jié):
1.在Python中使用MongoDB數(shù)據(jù)庫,就猶如我們平常使用EXCEL,通常需要經(jīng)歷數(shù)據(jù)庫命名、創(chuàng)建表單、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)展示4步;
2.MongoDB中常見的條件操作符有:$gt(>) 、$lt :(<) 、$gte :(>=) 、$lte :(<= ) ;
3.需要注意的坑:在篩選數(shù)據(jù)時(shí),需要先將爬取的數(shù)據(jù)定義為整數(shù)后,才能進(jìn)行大小判定。