《Python網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)教程》 課件-第7章 存儲(chǔ)數(shù)據(jù)_第1頁(yè)
《Python網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)教程》 課件-第7章 存儲(chǔ)數(shù)據(jù)_第2頁(yè)
《Python網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)教程》 課件-第7章 存儲(chǔ)數(shù)據(jù)_第3頁(yè)
《Python網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)教程》 課件-第7章 存儲(chǔ)數(shù)據(jù)_第4頁(yè)
《Python網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)教程》 課件-第7章 存儲(chǔ)數(shù)據(jù)_第5頁(yè)
已閱讀5頁(yè),還剩76頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第7章存儲(chǔ)數(shù)據(jù)《Python網(wǎng)絡(luò)爬蟲(chóng)基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解數(shù)據(jù)存儲(chǔ)的兩種方式,能夠說(shuō)出文件存儲(chǔ)和數(shù)據(jù)庫(kù)存儲(chǔ)的利弊掌握MongoDB數(shù)據(jù)庫(kù)的安裝,能夠獨(dú)立安裝MongoDB數(shù)據(jù)庫(kù)掌握Python操作MongoDB數(shù)據(jù)庫(kù)的方式,能夠使用pymongo模塊操作MongoDB數(shù)據(jù)庫(kù)的數(shù)據(jù)掌握Redis數(shù)據(jù)庫(kù)的安裝,能夠獨(dú)立安裝Redis數(shù)據(jù)庫(kù)掌握Python操作Redis的方式,能夠使用redis模塊操作Redis數(shù)據(jù)庫(kù)的數(shù)據(jù)章節(jié)概述/Summary在實(shí)際應(yīng)用中,網(wǎng)絡(luò)爬蟲(chóng)在對(duì)網(wǎng)頁(yè)的數(shù)據(jù)進(jìn)行抓取、解析之后,便可以獲得最終要采集的目標(biāo)數(shù)據(jù),然后對(duì)這些目錄數(shù)據(jù)進(jìn)行持久化存儲(chǔ),以便后期投入數(shù)據(jù)研究工作中。數(shù)據(jù)存儲(chǔ)主要有文件存儲(chǔ)和數(shù)據(jù)庫(kù)存儲(chǔ)兩種存儲(chǔ)方式。我們?cè)谇懊娴捻?xiàng)目開(kāi)發(fā)中已經(jīng)接觸過(guò)文件存儲(chǔ)。目錄/Contents7.17.27.3數(shù)據(jù)存儲(chǔ)的方式存儲(chǔ)至MongoDB數(shù)據(jù)庫(kù)存儲(chǔ)至Redis數(shù)據(jù)庫(kù)7.4實(shí)踐項(xiàng)目:采集小兔鮮兒網(wǎng)的商品信息數(shù)據(jù)存儲(chǔ)方式7.1了解數(shù)據(jù)存儲(chǔ)的兩種方式,能夠說(shuō)出文件存儲(chǔ)和數(shù)據(jù)庫(kù)存儲(chǔ)的利弊學(xué)習(xí)目標(biāo)7.1數(shù)據(jù)存儲(chǔ)的方式存儲(chǔ)數(shù)據(jù)是實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲(chóng)的最后一個(gè)環(huán)節(jié),我們?cè)谶@個(gè)環(huán)節(jié)主要做的事情便是將解析后的數(shù)據(jù)進(jìn)行持久化存儲(chǔ),為后期的數(shù)據(jù)研究工作做好準(zhǔn)備、我們可以采用兩種方式存儲(chǔ)網(wǎng)絡(luò)爬蟲(chóng)采集的數(shù)據(jù):文件存儲(chǔ)和數(shù)據(jù)庫(kù)存儲(chǔ)。7.1數(shù)據(jù)存儲(chǔ)的方式

文件存儲(chǔ)文件存儲(chǔ)是一種基礎(chǔ)的數(shù)據(jù)存儲(chǔ)方式,這種方式會(huì)將數(shù)據(jù)以文件的形式存儲(chǔ)到本地電腦中,例如,前面章節(jié)中涉及的案例都是采用這種方式存儲(chǔ)數(shù)據(jù)的。對(duì)于中小型網(wǎng)絡(luò)爬蟲(chóng)來(lái)說(shuō),適合使用文件的形式存儲(chǔ)數(shù)據(jù)。7.1數(shù)據(jù)存儲(chǔ)的方式

數(shù)據(jù)庫(kù)存儲(chǔ)文件存儲(chǔ)方式雖然能夠?qū)⒉杉臄?shù)據(jù)進(jìn)行存儲(chǔ),但這種方式會(huì)將數(shù)據(jù)存儲(chǔ)成一堆零散的文件,這導(dǎo)致數(shù)據(jù)不僅沒(méi)有清晰的結(jié)構(gòu),而且不利于后續(xù)在程序中使用。當(dāng)采集的數(shù)據(jù)量較大時(shí),可以使用數(shù)據(jù)庫(kù)存儲(chǔ)。7.1數(shù)據(jù)存儲(chǔ)的方式

數(shù)據(jù)庫(kù)存儲(chǔ)根據(jù)存儲(chǔ)數(shù)據(jù)時(shí)所用數(shù)據(jù)模型的不同,當(dāng)今互聯(lián)網(wǎng)中的數(shù)據(jù)庫(kù)主要分為兩種:關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)。關(guān)系型數(shù)據(jù)庫(kù)是指采用關(guān)系模型(二維表格形式)組織數(shù)據(jù)的數(shù)據(jù)庫(kù)系統(tǒng),它由數(shù)據(jù)表和數(shù)據(jù)表之間的關(guān)系組成,主要包含數(shù)據(jù)行、數(shù)據(jù)列、數(shù)據(jù)表、數(shù)據(jù)庫(kù)4個(gè)核心元素。非關(guān)系型數(shù)據(jù)庫(kù)也被稱(chēng)為NoSQL(NotOnlySQL)數(shù)據(jù)庫(kù),是指非關(guān)系型的、分布式的數(shù)據(jù)存儲(chǔ)系統(tǒng)。與關(guān)系型數(shù)據(jù)庫(kù)相比,非關(guān)系型數(shù)據(jù)庫(kù)無(wú)需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,它沒(méi)有固定的結(jié)構(gòu),既可以擁有不同的字段,也可以存儲(chǔ)各種格式的數(shù)據(jù)。7.1數(shù)據(jù)存儲(chǔ)的方式

數(shù)據(jù)庫(kù)存儲(chǔ)7.1數(shù)據(jù)存儲(chǔ)的方式在實(shí)際應(yīng)用中,文件存儲(chǔ)和數(shù)據(jù)庫(kù)存儲(chǔ)各有利弊,文件存儲(chǔ)比較適合中小型網(wǎng)絡(luò)爬蟲(chóng),數(shù)據(jù)庫(kù)存儲(chǔ)比較適合大型網(wǎng)絡(luò)爬蟲(chóng),大家可以根據(jù)自己的需求進(jìn)行選擇。存儲(chǔ)至MongoDB數(shù)據(jù)庫(kù)7.2掌握MongoDB數(shù)據(jù)庫(kù)的安裝,能夠獨(dú)立安裝MongoDB數(shù)據(jù)庫(kù)學(xué)習(xí)目標(biāo)7.2存儲(chǔ)至MongoDB數(shù)據(jù)庫(kù)

7.2.1下載與安裝MongoDBMongoDB屬于典型的文檔型數(shù)據(jù)庫(kù),它采用文檔的形式存儲(chǔ)數(shù)據(jù),每個(gè)文檔中包含多個(gè)鍵值對(duì)。這類(lèi)數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)結(jié)構(gòu)要求并不嚴(yán)格,具有結(jié)構(gòu)可變、查詢(xún)速度快的特點(diǎn)。在使用MongoDB數(shù)據(jù)庫(kù)之前,我們需要確保自己的計(jì)算機(jī)中已經(jīng)安裝了MongoDB數(shù)據(jù)庫(kù)。接下來(lái),以Windows7系統(tǒng)為例,分別為大家介紹如何在計(jì)算機(jī)中下載并安裝MongoDB數(shù)據(jù)庫(kù)。7.2.1下載與安裝MongoDB在瀏覽器中訪(fǎng)問(wèn)MongoDB社區(qū)版的下載頁(yè)面,該頁(yè)面中展示支持Windows系統(tǒng)的所有可用版本。單擊version選擇下載的版本;單擊Download下載安裝包多線(xiàn)程7.2.1下載與安裝MongoDB步驟1步驟2步驟3步驟4安裝MongoDB雙擊下載的MongoDB安裝包啟動(dòng)安裝程序,進(jìn)入WelcometotheMongoDB界面。7.2.1下載與安裝MongoDB步驟2步驟1步驟3步驟4勾選協(xié)議單擊WelcometotheMongoDB4.2.15界面中Next按鈕,進(jìn)入End-UserLicenseAgreement界面。7.2.1下載與安裝MongoDB步驟3步驟1步驟2步驟4進(jìn)入ChooseSetupType界面勾選End-UserLicenseAgreement界面中的協(xié)議后,單擊Next按鈕進(jìn)入ChooseSetupType界面。Complete:此類(lèi)型將安裝所有程序功能,需占用較多的磁盤(pán)空間,建議大多數(shù)用戶(hù)使用。Custom:此類(lèi)型允許用戶(hù)自行選擇要安裝的程序功能及安裝位置,建議高級(jí)用戶(hù)使用。7.2.1下載與安裝MongoDB步驟4步驟1步驟2步驟3進(jìn)入ServiceConfiguration界面在ChooseSetupType界面中,單擊Complete按鈕進(jìn)入ServiceConfiguration界面。data文件夾用于存放創(chuàng)建的數(shù)據(jù)庫(kù)log文件夾用于存放數(shù)據(jù)庫(kù)的日志文件多線(xiàn)程7.2.1下載與安裝MongoDB步驟5步驟6步驟7步驟8進(jìn)入InstallMongoDBCompass界面單擊ServiceConfiguration界面中Next按鈕,進(jìn)入InstallMongoDBCompass界面。7.2.1下載與安裝MongoDB步驟6步驟5步驟7步驟8進(jìn)入ReadytoinstallMongoDB界面取消勾選InstallMongoDBCompass復(fù)選框,單擊Next按鈕進(jìn)入ReadytoinstallMongoDB4.2.152008R2PlusSSL(64bit)界面。7.2.1下載與安裝MongoDB步驟7步驟5步驟6步驟8進(jìn)入CompletedtheMongoDB4.2.15界面單擊ReadytoinstallMongoDB4.2.152008R2PlusSSL(64bit)界面的Install按鈕開(kāi)始安裝MongoDB。7.2.1下載與安裝MongoDB步驟8步驟5步驟6步驟7完成安裝MongoDB默認(rèn)會(huì)將創(chuàng)建的數(shù)據(jù)庫(kù)文件存儲(chǔ)在db目錄下,但是這個(gè)目錄不會(huì)被主動(dòng)創(chuàng)建,需要用戶(hù)在MongoDB安裝完成后自己創(chuàng)建db文件夾。在“C:\ProgramFiles\MongoDB\Server\4.0\data\”目錄下創(chuàng)建一個(gè)文件夾db。7.2.1下載與安裝MongoDB步驟8步驟5步驟6步驟7完成安裝打開(kāi)命令提示符窗口,使用cd命令切換當(dāng)前工作路徑為MongoDB.exe所在的安裝目錄(本書(shū)安裝的路徑為“C:\ProgramFiles\MongoDB\Server\4.2\bin”),之后輸入如下命令指定MongoDB數(shù)據(jù)庫(kù)文件的位置為剛剛新建的db目錄。mongod--dbpath"C:\ProgramFiles\MongoDB\Server\4.2\data\db"為了避免后續(xù)重復(fù)切換至MongoDB.exe的安裝目錄,可以將以上路徑添加到環(huán)境變量中。掌握Python操作MongoDB的方式,能夠使用pymongo模塊操作MongoDB數(shù)據(jù)庫(kù)的數(shù)據(jù)學(xué)習(xí)目標(biāo)7.2.2使用Python操作MongoDBPython提供了一個(gè)第三方模塊pymongo,該模塊中定義了連接和操作MongoDB數(shù)據(jù)庫(kù)的功能。使用pymongo模塊之前,我們需要在當(dāng)前的Python環(huán)境中安裝pymongo模塊。pipinstallpymongo安裝好pymongo模塊以后,我們就可以使用pymongo模塊操作MongoDB數(shù)據(jù)庫(kù)。7.2.2使用Python操作MongoDB

創(chuàng)建連接pymongo模塊中,MongoClient類(lèi)的對(duì)象用于建立與MongoDB數(shù)據(jù)庫(kù)的連接,它可以通過(guò)如下構(gòu)造方法進(jìn)行創(chuàng)建。__init__(self,host=None,port=None,document_class=dict,tz_aware=None,connect=None,type_registry=None,**kwargs)host:表示主機(jī)地址,默認(rèn)為localhost。port:表示連接的端口號(hào),默認(rèn)為27017。document_class:表示數(shù)據(jù)庫(kù)執(zhí)行查詢(xún)操作后返回文檔的類(lèi)型,默認(rèn)為dict。7.2.2使用Python操作MongoDB

創(chuàng)建連接使用默認(rèn)的主機(jī)地址和端口號(hào)建立與本地MongoDB數(shù)據(jù)庫(kù)的連接,示例代碼如下。client=MongoClient()顯式地指定主機(jī)地址和端口號(hào),示例代碼如下。client=MongoClient('localhost',27017)使用MongoDB的URL路徑形式傳入?yún)?shù),示例代碼如下。client=MongoClient('mongodb://localhost:27017')7.2.2使用Python操作MongoDB

訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)在pymongo模塊中,DataBase對(duì)象表示一個(gè)數(shù)據(jù)庫(kù)。訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的方式比較簡(jiǎn)單,可以直接使用“連接對(duì)象.數(shù)據(jù)庫(kù)名稱(chēng)”的方式訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)。db=client.database_test#訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)database_test此外,還可以使用字典的形式進(jìn)行訪(fǎng)問(wèn),示例代碼如下。db=client['database_test']值得一提的是,使用以上兩種方式訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)時(shí),若指定的數(shù)據(jù)庫(kù)已經(jīng)存在,則會(huì)直接訪(fǎng)問(wèn)該數(shù)據(jù)庫(kù),否則會(huì)重新創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。7.2.2使用Python操作MongoDB

創(chuàng)建集合在pymongo模塊中,Collection對(duì)象代表集合,集合類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)中的表,但是它沒(méi)有固定的結(jié)構(gòu)。創(chuàng)建集合與訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的方式類(lèi)似,直接通過(guò)“數(shù)據(jù)庫(kù)名稱(chēng).集合名稱(chēng)”的形式實(shí)現(xiàn)。coll=db.student#創(chuàng)建集合student也可以采用訪(fǎng)問(wèn)字典值的形式創(chuàng)建集合,示例代碼如下。coll=db['student']7.2.2使用Python操作MongoDB

插入文檔pymongo中提供了兩個(gè)向集合中插入文檔的方法,分別是insert_one()和insert_many()。result=coll.insert_one({'name':'zhaoliu','age':23})insert_many()用于一次向集合中插入多條文檔,代碼如下。result=coll.insert_many([{'name':'zhangsan','age':20},{'name':'lisi','age':21},{'name':'wangwu','age':22}])insert_one()用于一次向集合中插入一條文檔,代碼如下。7.2.2使用Python操作MongoDB

查詢(xún)文檔pymongo中提供了兩個(gè)查詢(xún)文檔的方法,分別是find_one()和find()方法。result=coll.find({'age':20})可以使用for循環(huán)遍歷查找的結(jié)果。fordocinresult:print(doc)find_one()方法用于查詢(xún)集合中的一條文檔,若找到匹配的文檔,返回單個(gè)文檔,代碼如下。7.2.2使用Python操作MongoDB

更新文檔pymongo中提供了兩個(gè)更新文檔的方法,分別是update_one()和update_many(),其中update_one()方法用于更新集合中的一條文檔,update_many()方法用于更新集合中的多條文檔。coll.update_one({'name':'zhaoliu'},{'$set':{'age':25}})result_update=coll.find({'name':'zhaoliu'})fordocinresult_update:print(doc)使用update_one()方法更新集合中的一條文檔,代碼如下。7.2.2使用Python操作MongoDB

刪除文檔pymongo中提供了兩個(gè)刪除文檔的方法,分別是delete_one()和delete_many(),其中delete_one()用于從集合中刪除一條文檔,delete_many()方法用于從集合中刪除多條文檔。coll.delete_many({})#刪除集合中的所有文檔result_find=coll.find({'name':'zhaoliu'})#查找name為'zhaoliu'的文檔fordocinresult_find:print(doc)使用delete_many()方法刪除coll中的所有文檔,并查找name為zhaoliu的文檔,示例代碼如下。7.2.2使用Python操作MongoDB存儲(chǔ)至Redis數(shù)據(jù)庫(kù)7.3Redis屬于典型的鍵值類(lèi)型的數(shù)據(jù)庫(kù),它采用鍵值對(duì)的形式存儲(chǔ)數(shù)據(jù)到內(nèi)存中,具有容易部署、查詢(xún)速度快、支持高并發(fā)操作等特點(diǎn)。由于Redis數(shù)據(jù)庫(kù)會(huì)將數(shù)據(jù)存儲(chǔ)到內(nèi)存中,所以它讀寫(xiě)數(shù)據(jù)的效率非常高,但不適合存儲(chǔ)大量的數(shù)據(jù),經(jīng)常被應(yīng)用到分布式網(wǎng)絡(luò)爬蟲(chóng)的場(chǎng)景中。7.3存儲(chǔ)至Redis數(shù)據(jù)庫(kù)

掌握Redis數(shù)據(jù)庫(kù)的安裝,能夠獨(dú)立安裝Redis數(shù)據(jù)庫(kù)學(xué)習(xí)目標(biāo)7.3.1下載與安裝Redis在使用Redis數(shù)據(jù)庫(kù)之前,我們需要確保自己的計(jì)算機(jī)中已經(jīng)安裝了Redis數(shù)據(jù)庫(kù)。GitHub網(wǎng)站上還是提供了Windows平臺(tái)使用的版本。7.3.1下載與安裝Redis

下載Redis在瀏覽器中訪(fǎng)問(wèn)GitHub網(wǎng)站上Redis數(shù)據(jù)庫(kù)的下載頁(yè)面,當(dāng)前頁(yè)面中顯示了所有可以被用戶(hù)下載的多個(gè)版本,本書(shū)要安裝的版本是3.2.100。7.3.1下載與安裝Redis

安裝Redis7.3.1下載與安裝Redis步驟1步驟2步驟3步驟4訪(fǎng)問(wèn)Redis下載頁(yè)雙擊安裝文件啟動(dòng)安裝程序,進(jìn)入WelcometotheRedisonWindowsSetupWizard界面。

安裝Redis7.3.1下載與安裝Redis步驟2步驟1步驟3步驟4勾選協(xié)議單擊WelcometotheRedisonWindowsSetupWizard界面的Next按鈕進(jìn)入End-UserLicenseAgreement界面。

安裝Redis7.3.1下載與安裝Redis步驟3步驟1步驟2步驟4添加到環(huán)境變量勾選IacceptthetermsintheLicenseAgreement復(fù)選框,單擊“Next”按鈕進(jìn)入DestinationFolder界面。

安裝Redis7.3.1下載與安裝Redis步驟4步驟1步驟2步驟3添加防火墻提醒單擊“Next”按鈕進(jìn)入PortNumberandFirewallException界面。

安裝Redis7.3.1下載與安裝Redis步驟5步驟6設(shè)置最大內(nèi)存單擊PortNumberandFirewallException界面中Next按鈕進(jìn)入MemoryLimit界面,該界面中可設(shè)置最大內(nèi)存。

安裝Redis7.3.1下載與安裝Redis步驟5步驟6完成安裝單擊MemoryLimit界面Next按鈕進(jìn)入準(zhǔn)備安裝的界面,在該界面中單擊Finish按鈕完成安裝。掌握Python操作Redis的方式,能夠使用redis模塊操作Redis數(shù)據(jù)庫(kù)的數(shù)據(jù)學(xué)習(xí)目標(biāo)7.3.2使用Python操作RedisPython提供了一個(gè)第三方模塊redis,該模塊中定義了連接和操作Redis數(shù)據(jù)庫(kù)的功能。使用redis模塊之前,我們需要在當(dāng)前的Python環(huán)境中安裝redis模塊。pipinstallredis安裝好redis模塊以后,我們就可以使用redis模塊操作Redis數(shù)據(jù)庫(kù)了。7.3.2使用Python操作RedisRedis數(shù)據(jù)庫(kù)中,數(shù)據(jù)都是以鍵值對(duì)的形式進(jìn)行存儲(chǔ)的,其中鍵必須為字符串類(lèi)型,值可以為字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(zset)這五5種類(lèi)型。7.3.2使用Python操作Redis

創(chuàng)建連接redis模塊中,StrictRedis類(lèi)的對(duì)象用于建立與Redis數(shù)據(jù)庫(kù)的連接。StrictRedis(host='localhost',port=6379,db=0,password=None,socket_timeout=None,socket_connect_timeout=None,socket_keepalive=None,socket_keepalive_options=None,connection_pool=None,unix_socket_path=None,encoding='utf-8',decode_responses=False,...)host:表示待連接的Redis數(shù)據(jù)庫(kù)所在主機(jī)的IP地址,默認(rèn)設(shè)為localhost。port:表示Redis數(shù)據(jù)庫(kù)程序的端口,默認(rèn)值為6379。db:表示數(shù)據(jù)庫(kù)索引,默認(rèn)值為0,最大值為15,對(duì)應(yīng)數(shù)據(jù)庫(kù)的名稱(chēng)為db0和db15。encoding:表示采用的編碼格式,默認(rèn)值為utf-8。decode_responses:表示是否對(duì)返回的結(jié)果進(jìn)行解碼,默認(rèn)值為False。7.3.2使用Python操作Redis

創(chuàng)建連接使用默認(rèn)IP地址和端口號(hào)創(chuàng)建StrictRedis類(lèi)的對(duì)象,建立與本地Redis數(shù)據(jù)庫(kù)的連接,具體代碼如下。importredissr_obj=redis.StrictRedis()7.3.2使用Python操作Redis

增加鍵值對(duì)增加鍵值對(duì)的常用方法有兩個(gè):set()和append()。set()方法用于根據(jù)指定的鍵設(shè)置值,若指定的鍵不存在,則會(huì)新建一個(gè)鍵值對(duì),否則會(huì)修改該鍵對(duì)應(yīng)的值。set()方法會(huì)返回一個(gè)布爾值,若返回的值為T(mén)rue,則表示鍵值對(duì)創(chuàng)建或修改成功,否則表示創(chuàng)建或修改失敗。append()方法用于為指定的鍵追加值,若指定的鍵存在,則新值會(huì)追加到原值的末尾,否則會(huì)創(chuàng)建一個(gè)新的鍵值對(duì)。7.3.2使用Python操作Redis

增加鍵值對(duì)使用set()方法向默認(rèn)的數(shù)據(jù)庫(kù)db0中增加鍵值對(duì),具體代碼如下。#增加鍵值對(duì)result=sr_obj.set('py1','Tom')print(result)7.3.2使用Python操作Redis

查詢(xún)鍵值對(duì)get()方法用于根據(jù)指定的鍵查詢(xún)?cè)撴I對(duì)應(yīng)的值,查詢(xún)失敗則會(huì)返回None。例如,使用get()方法查詢(xún)剛剛添加的鍵值對(duì)。#查詢(xún)鍵為py1的值result=sr_obj.get('py1')print(result)7.3.2使用Python操作Redis

修改鍵值對(duì)使用set()方法可以對(duì)Redis數(shù)據(jù)庫(kù)已經(jīng)存在的鍵值對(duì)進(jìn)行修改。例如,使用set()方法將鍵py1對(duì)應(yīng)的值修改為Jerry,并再次查詢(xún)修改后的鍵值對(duì)。#修改鍵py1對(duì)應(yīng)的值result=sr_obj.set('py1','Jerry')print(result)result=sr_obj.get('py1')print(result)7.3.2使用Python操作Redis

刪除鍵值對(duì)delete()方法會(huì)根據(jù)指定鍵刪除其對(duì)應(yīng)的值,并根據(jù)該方法返回的結(jié)果判定是否刪除成功。若返回的結(jié)果為受影響鍵的數(shù)量,則表示刪除成功;若返回的結(jié)果為0,則表示刪除失敗。#刪除鍵py1的值result=sr_obj.delete('py1')print(result)7.3.2使用Python操作Redis熟悉Redis桌面管理工具的使用,能夠通過(guò)RedisDesktopManager查看Redis中數(shù)據(jù)學(xué)習(xí)目標(biāo)7.3.3Redis桌面管理工具為了能直觀地看到Redis數(shù)據(jù)庫(kù)中數(shù)據(jù)的變化情況,這里推薦一個(gè)Redis數(shù)據(jù)庫(kù)的桌面管理工具——RedisDesktopManager,它為Windows、macOS等平臺(tái)都提供了快速的支持,操作簡(jiǎn)單且使用方便。7.3.3Redis桌面管理工具下面以Windows7系統(tǒng)為例,介紹如何安裝與使用RedisDesktopManager2019.4.0工具。7.3.3Redis桌面管理工具7.3.3Redis桌面管理工具步驟1步驟2步驟3步驟4進(jìn)入RedisDesktopManager的主界面打開(kāi)RedisDesktopManager安裝包,按照安裝向?qū)У奶崾局鸩竭M(jìn)行安裝,安裝完成后進(jìn)入RedisDesktopManager的主界面。7.3.3Redis桌面管理工具步驟2步驟1步驟3步驟4創(chuàng)建連接單擊“連接到Redis服務(wù)器”按鈕,選擇創(chuàng)建一個(gè)Redis連接,在彈出的對(duì)話(huà)框中,填寫(xiě)新創(chuàng)建連接的名稱(chēng)、Redis數(shù)據(jù)庫(kù)的主機(jī)IP地址,并使用默認(rèn)的端口6379。7.3.3Redis桌面管理工具步驟3步驟1步驟2步驟4啟動(dòng)的Redis服務(wù)命令的控制臺(tái)在Redis-Windows7的上方右擊選擇“Console”,可以在界面右下方看到啟動(dòng)的Redis服務(wù)命令的控制臺(tái)。7.3.3Redis桌面管理工具步驟4步驟1步驟2步驟3在控制臺(tái)中執(zhí)行set/get命令先使用set命令設(shè)置一個(gè)鍵為hello值為world的鍵值對(duì),再使用get命令查詢(xún)鍵hello對(duì)應(yīng)的值。7.3.3Redis桌面管理工具步驟5RedisDesktopManager中查看數(shù)據(jù)設(shè)置完成后,在Redis-Windows7節(jié)點(diǎn)上右擊選擇“Reload”進(jìn)行刷新,刷新后可以看到數(shù)據(jù)庫(kù)db0中多了一條數(shù)據(jù)。實(shí)踐項(xiàng)目:采集小兔鮮兒網(wǎng)的商品信息7.4掌握小兔鮮兒網(wǎng)站數(shù)據(jù)的抓取,能夠?qū)⒉杉臄?shù)據(jù)保存到MongoDB中學(xué)習(xí)目標(biāo)7.4采集小兔鮮兒網(wǎng)的商品信息小兔鮮兒網(wǎng)是一款由傳智播客前端開(kāi)發(fā)工程師打造的電商類(lèi)的項(xiàng)目,它模仿其他商品交易平臺(tái)的版塊,匯聚了居家、美食、服飾、母嬰、個(gè)護(hù)、嚴(yán)選、數(shù)碼、運(yùn)動(dòng)等幾個(gè)分類(lèi)的商品。實(shí)踐此項(xiàng)目旨在讓讀者體驗(yàn)到真實(shí)項(xiàng)目的開(kāi)發(fā)過(guò)程。在本節(jié)中,我們將運(yùn)用前面所學(xué)的知識(shí)開(kāi)發(fā)一個(gè)完整的網(wǎng)絡(luò)爬蟲(chóng)項(xiàng)目,用于采集小兔鮮兒網(wǎng)上車(chē)載用品分類(lèi)下所有的商品信息,并將這些商品信息保存到MongoDB數(shù)據(jù)庫(kù)中。

項(xiàng)目需求7.4采集小兔鮮兒網(wǎng)的商品信息在瀏覽器中訪(fǎng)問(wèn)小兔鮮兒網(wǎng)的首頁(yè)(該頁(yè)面中默認(rèn)顯示了多個(gè)版塊)單擊菜單欄中的“數(shù)碼”選項(xiàng)進(jìn)入數(shù)碼分類(lèi)的頁(yè)面,在該頁(yè)面中可以看到影音娛樂(lè)、樂(lè)器、車(chē)載用品、辦公文具4個(gè)子分類(lèi),單擊任意一個(gè)子分類(lèi)就會(huì)進(jìn)入該子分類(lèi)對(duì)應(yīng)的頁(yè)面。例如,單擊子分類(lèi)“車(chē)載用品”進(jìn)入車(chē)載用品類(lèi)的商品頁(yè)面。

項(xiàng)目目標(biāo)7.4采集小兔鮮兒網(wǎng)的商品信息單擊任意一個(gè)商品進(jìn)入該商品的詳情頁(yè)面。

項(xiàng)目目標(biāo)7.4采集小兔鮮兒網(wǎng)的商品信息拖住豎向滾動(dòng)條向下翻查,可以在商品詳情頁(yè)面中看到貓抓板的商品詳情版塊。

項(xiàng)目目標(biāo)商品名稱(chēng)、商品描述、商品鏈接、商品價(jià)格、商品圖片、商品詳情為抓取的數(shù)據(jù)7.4采集小兔鮮兒網(wǎng)的商品信息在了解了項(xiàng)目目標(biāo)之后,我們已經(jīng)知道了從網(wǎng)頁(yè)源代碼中要提取哪些數(shù)據(jù)。下面從抓取網(wǎng)頁(yè)和解析網(wǎng)頁(yè)兩個(gè)方面對(duì)網(wǎng)頁(yè)進(jìn)行分析。

項(xiàng)目分析7.4采集小兔鮮兒網(wǎng)的商品信息抓取網(wǎng)頁(yè)分析

項(xiàng)目分析在瀏覽器中訪(fǎng)問(wèn)車(chē)載用品類(lèi)頁(yè)面,滾動(dòng)至頁(yè)面底部查看完展示的部分商品后繼續(xù)滾動(dòng),可以看到該頁(yè)面底部又展示了一部分商品。此時(shí)查看當(dāng)前頁(yè)面的源代碼,可以看到源代碼中搜索不到有關(guān)任何商品的數(shù)據(jù),之所以出現(xiàn)這種情況是因?yàn)樗猩唐窋?shù)據(jù)都是通過(guò)AJAX技術(shù)動(dòng)態(tài)加載的,因此我們對(duì)加載數(shù)據(jù)時(shí)發(fā)送的請(qǐng)求進(jìn)行分析。7.4采集小兔鮮兒網(wǎng)的商品信息抓取網(wǎng)頁(yè)分析

項(xiàng)目分析打開(kāi)瀏覽器的開(kāi)發(fā)者窗口,在該窗口頂部的菜單欄中切換至Network選項(xiàng),并將頁(yè)面請(qǐng)求的篩選條件設(shè)為XHR,說(shuō)明只展示通過(guò)AJAX技術(shù)動(dòng)態(tài)加載數(shù)據(jù)時(shí)發(fā)送的請(qǐng)求。7.4采集小兔鮮兒網(wǎng)的商品信息抓取網(wǎng)頁(yè)分析

項(xiàng)目分析單擊標(biāo)注的temporary,窗口右側(cè)彈出查看該請(qǐng)求的詳細(xì)信息的界面。在該界面的上方選中Preview選項(xiàng),采用預(yù)覽模式展示當(dāng)前請(qǐng)求發(fā)送后返回的響應(yīng)信息。7.4采集小兔鮮兒網(wǎng)的商品信息抓取網(wǎng)頁(yè)分析

項(xiàng)目分析展開(kāi)result,可以看到result下的所有內(nèi)容。result對(duì)應(yīng)的值是一個(gè)JSON對(duì)象,該對(duì)象中包含了多個(gè)鍵值對(duì),其中counts:337代表車(chē)載用品類(lèi)頁(yè)面中總共有337個(gè)商品;pages:1代表當(dāng)前展示的是第1頁(yè)商品信息;pageSize:20代表每頁(yè)至多展示20個(gè)商品;pages:17代表總共有17頁(yè)。另外,items的值是一個(gè)JSON數(shù)組。7.4采集小

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論