版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第9章初識(shí)網(wǎng)絡(luò)爬蟲框架Scrapy《Python網(wǎng)絡(luò)爬蟲基礎(chǔ)教程》學(xué)習(xí)目標(biāo)/Target了解什么是Scrapy框架,能夠復(fù)述出Scrapy框架的優(yōu)點(diǎn)與缺點(diǎn)熟悉Scrapy框架的架構(gòu),能夠歸納每個(gè)組件的功能與職責(zé)熟悉Scrapy框架的運(yùn)作流程,能夠歸納Scrapy框架的運(yùn)作流程掌握Scrapy框架的安裝方式,能夠獨(dú)立安裝Scrapy框架,并能解決安裝過程中出現(xiàn)的常見問題掌握Scrapy框架的基本操作,能夠靈活應(yīng)用Scrapy框架新建項(xiàng)目和制作爬蟲章節(jié)概述/Summary隨著網(wǎng)絡(luò)爬蟲的應(yīng)用越來越多,互聯(lián)網(wǎng)中涌現(xiàn)了一些網(wǎng)絡(luò)爬蟲框架,這些框架將網(wǎng)絡(luò)爬蟲的一些常用功能和業(yè)務(wù)邏輯進(jìn)行了封裝。在這些框架的基礎(chǔ)上,我們只需要按照需求添加少量代碼,就可以實(shí)現(xiàn)一個(gè)網(wǎng)絡(luò)爬蟲。Scrapy是目前比較流行的Python網(wǎng)絡(luò)爬蟲框架之一,可以幫助開發(fā)人員高效地開發(fā)網(wǎng)絡(luò)爬蟲程序。目錄/Contents9.19.29.3Scrapy框架簡(jiǎn)介Scrapy框架架構(gòu)Scrapy框架運(yùn)作流程目錄/Contents9.49.59.6Scrapy框架安裝Scrapy框架基本操作實(shí)踐項(xiàng)目:采集黑馬程序員視頻庫的視頻信息Scrapy框架簡(jiǎn)介9.1了解什么是Scrapy框架,能夠復(fù)述出Scrapy框架的優(yōu)點(diǎn)與缺點(diǎn)學(xué)習(xí)目標(biāo)9.1Scrapy框架簡(jiǎn)介Scrapy是一個(gè)純使用Python語言開發(fā)、開源的網(wǎng)絡(luò)爬蟲框架,用于抓取網(wǎng)站頁面,并從頁面中提取結(jié)構(gòu)化數(shù)據(jù)。Scrapy最初是為了頁面抓取而設(shè)計(jì)的,可以簡(jiǎn)單、快速地從網(wǎng)站頁面中提取所需的數(shù)據(jù),如今Scrapy具備更加廣泛的用途,可以被應(yīng)用到諸如數(shù)據(jù)挖掘、數(shù)據(jù)監(jiān)測(cè)、自動(dòng)化測(cè)試等領(lǐng)域以及通用網(wǎng)絡(luò)爬蟲中。9.1Scrapy框架簡(jiǎn)介Scrapy是基于Twisted框架開發(fā)的,Twisted是一個(gè)流行的基于事件驅(qū)動(dòng)的網(wǎng)絡(luò)引擎框架,采用了異步代碼實(shí)現(xiàn)并發(fā)功能。Twisted負(fù)責(zé)處理網(wǎng)絡(luò)通信,這樣不僅加快頁面的下載速度,而且減少手動(dòng)實(shí)現(xiàn)異步操作。9.1Scrapy框架簡(jiǎn)介Scrapy框架的功能如此強(qiáng)大,離不開其自身具備的如下幾個(gè)優(yōu)點(diǎn)。9.1Scrapy框架簡(jiǎn)介具有豐富的文檔、良好的社區(qū)以及龐大的用戶群體。Scrapy支持并發(fā)功能,可以靈活地調(diào)整并發(fā)線程的數(shù)量。采用可讀性很強(qiáng)的XPath技術(shù)解析網(wǎng)頁,解析速度更加快速。具有統(tǒng)一的中間件,可以對(duì)數(shù)據(jù)進(jìn)行過濾。支持Shell工具,方便開發(fā)人員獨(dú)立調(diào)試程序。通過管道將數(shù)據(jù)存入數(shù)據(jù)庫,靈活方便,且可以保存為多種形式。具有高度的可定制化功能,經(jīng)過簡(jiǎn)單的改造后便可以實(shí)現(xiàn)具有特定功能的網(wǎng)絡(luò)爬蟲。9.1Scrapy框架簡(jiǎn)介雖然Scrapy框架功能強(qiáng)大,但自身仍存在幾個(gè)缺點(diǎn)。自身無法實(shí)現(xiàn)分布式爬蟲。去重效果差,極易消耗內(nèi)存。無法獲取采用JavaScript技術(shù)進(jìn)行動(dòng)態(tài)渲染的頁面內(nèi)容。為了彌補(bǔ)Scrapy框架的這些缺點(diǎn)產(chǎn)生了許多框架插件進(jìn)行解決,比如,Scrapy-Redis庫解決了Scrapy框架不支持分布式爬蟲的問題,Scrapy-Splash庫解決了Scrapy框架不支持JavaScript動(dòng)態(tài)渲染的問題等。9.2Scrapy框架架構(gòu)Scrapy框架的強(qiáng)大功能離不開眾多組件的支撐,這些組件相互協(xié)作,共同完成整個(gè)采集數(shù)據(jù)的任務(wù)。Scrapy框架的架構(gòu)圖如下圖所示。ItemPipelineDownloaderMiddlewaresSpiderMiddlewaresScrapyEngineSchedulerDownloaderSpidersScrapy框架中包含的組件。9.2Scrapy框架架構(gòu)Scrapy框架中包含的組件。(1)ScrapyEngine(引擎):負(fù)責(zé)Scheduler、Spiders、ItemPipeline、Downloader這幾個(gè)組件之間的通信,包括信號(hào)和數(shù)據(jù)的傳遞等。(2)Scheduler(調(diào)度器):負(fù)責(zé)接收ScrapyEngine發(fā)送過來的Requests(請(qǐng)求),并按照一定的方式進(jìn)行整理排列和入隊(duì),在ScrapyEngine需要時(shí)再次將請(qǐng)求交還給ScrapyEngine。(3)Downloader:負(fù)責(zé)下載由ScrapyEngine發(fā)送的所有Requests,并將其獲取到的Responses(響應(yīng))交還給ScrapyEngine,由ScrapyEngine交給Spiders進(jìn)行處理。(4)Spiders:負(fù)責(zé)處理所有Responses,從Responses中解析并提取Items封裝的數(shù)據(jù),并將需要跟進(jìn)的URL提交給ScrapyEngine,再次進(jìn)入Scheduler。9.2Scrapy框架架構(gòu)Scrapy框架中包含的組件。(5)ItemPipeline:負(fù)責(zé)處理Spiders中獲取的Items封裝的數(shù)據(jù),并對(duì)這些數(shù)據(jù)進(jìn)行后期處理,如詳細(xì)分析、過濾、存儲(chǔ)等。(6)DownloaderMiddlewares:位于Downloader和ScrapyEngine之間,可以自定義擴(kuò)展下載功能的組件。(7)SpiderMiddlewares:位于Spiders和ScrapyEngine之間,可以自定義擴(kuò)展ScrapyEngine和Spiders中間通信的功能組件。9.2Scrapy框架架構(gòu)熟悉Scrapy框架的運(yùn)作流程,能夠歸納Scrapy框架的運(yùn)作流程學(xué)習(xí)目標(biāo)9.3Scrapy框架運(yùn)作流程Scrapy框架各組件之間的運(yùn)作流程9.3Scrapy框架運(yùn)作流程9.3Scrapy框架運(yùn)作流程(1)ScrapyEngine從Spiders中獲取初始URL。(2)ScrapyEngine將初始URL封裝成Requests交給Scheduler。(3)Scheduler將下一個(gè)Requests交給ScrapyEngine。(4)ScrapyEngine將Requests通過DownloaderMiddlewares轉(zhuǎn)交給Downloader。(5)頁面完成下載后,Downloader生成一個(gè)該頁面的Responses,并將該Responses通過DownloaderMiddlewares交給ScrapyEngine。(6)ScrapyEngine從Downloader中接收到Responses,并通過SpiderMiddlewares轉(zhuǎn)交給Spiders進(jìn)行處理。(7)Spiders處理Responses,并將處理后的Items或新的Requests(比如在前面案例中看到的“下一頁”鏈接)交給ScrapyEngine。(8)ScrapyEngine將處理后的Items交給ItemPipeline,將新的Requests交給Scheduler。重復(fù)步驟(1)~(8),直到Scheduler中沒有新的Requests為止。Scrapy框架各組件之間的運(yùn)作步驟多學(xué)一招ScrapyEngine:Hi!Spiders,你要處理哪一個(gè)網(wǎng)站?Spiders:老大要我處理。ScrapyEngine:你把第一個(gè)需要處理的URL給我吧。Spiders:給你,第一個(gè)URL是。ScrapyEngine:Hi!Scheduler,我這有一個(gè)請(qǐng)求(根據(jù)以上URL封裝的Request),你幫我排序入隊(duì)一下。Scheduler:好的,正在處理,你等一下。ScrapyEngine:Hi!Scheduler,把你處理好的請(qǐng)求給我。Scheduler:給你,這是我處理好的請(qǐng)求。ScrapyEngine:Hi!Downloader,你按照老大的Downloadermiddlewares的設(shè)置,幫我按這個(gè)請(qǐng)求下載些東西。Scrapy擬人小劇場(chǎng)從加粗一行的對(duì)白開始重復(fù)交流,直到處理完老大需要的全部信息。多學(xué)一招Downloader:好的,給你,這是下載好的東西(如果下載失敗,則這句話會(huì)換成“Sorry,這個(gè)請(qǐng)求下載失敗了”,然后ScrapyEngine會(huì)告訴Scheduler“這個(gè)請(qǐng)求下載失敗了,你記錄一下,我們待會(huì)兒再下載”)。ScrapyEngine:Hi!Spider,這是下載好的東西,并且按照老大的要求已被DownloaderMiddlewares處理過,你自己再處理一下。Spiders:Hi!ScrapyEngine,我這里有兩個(gè)結(jié)果,一個(gè)是我需要跟進(jìn)的URL,另一個(gè)是我獲取的Items。ScrapyEngine:Hi!ItemPipeline,我這兒有個(gè)Items需要你,幫助處理一下!Scheduler,這是需要跟進(jìn)的URL,你幫我處理下。ItemPipeline和Scheduler:好的,現(xiàn)在就做!Scrapy擬人小劇場(chǎng)掌握Scrapy框架的安裝方式,能夠獨(dú)立安裝Scrapy框架,并能解決安裝過程中出現(xiàn)的常見問題學(xué)習(xí)目標(biāo)9.4Scrapy框架安裝Scrapy是一個(gè)第三方框架,如果要使用該框架開發(fā)網(wǎng)絡(luò)爬蟲程序,需要先在計(jì)算機(jī)中安裝該框架。以Windows7操作系統(tǒng)為例,分別對(duì)安裝Scrapy和常見安裝問題進(jìn)行介紹。9.4Scrapy框架安裝由于Windows7系統(tǒng)默認(rèn)沒有安裝Python,所以在安裝Scrapy框架之前,需要保證Windows7系統(tǒng)下已經(jīng)安裝了Python。在命令提示符窗口中使用pip工具安裝Scrapy框架。
安裝Scrapypipinstallscrapy==2.5.09.4Scrapy框架安裝在Windows7系統(tǒng)下安裝Scrapy框架常見的兩個(gè)問題是缺少M(fèi)icrosoftVisualC++14.0組件和Twisted安裝出錯(cuò)。error:MicrosoftVisualC++14.0isrequired.Getitwith"MicrosoftVisualC++BuildTools":/visual-cpp-build-tools缺少M(fèi)icrosoftVisualC++14.0組件9.4Scrapy框架安裝
常見安裝問題
常見安裝問題缺少M(fèi)icrosoftVisualC++14.0組件若當(dāng)前電腦上缺少M(fèi)icrosoftVisualC++14.0組件,則可以單獨(dú)安裝該組件。在瀏覽器中進(jìn)入下載MicrosoftVisualC++14.0組件的頁面。完成下載后可以看到下載的安裝包。雙擊安裝包進(jìn)行安裝,在安裝過程中全部保持默認(rèn)設(shè)置即可,無須進(jìn)行任何修改。需要注意的是,我們?cè)赩isualStudio2015組件安裝完成之后需要重啟計(jì)算機(jī)。單擊下載9.4Scrapy框架安裝Twisted安裝出錯(cuò)由于Scrapy框架使用了異步網(wǎng)絡(luò)框架Twisted,所以在安裝Scrapy的過程中需要安裝Twisted。若沒有安裝Teisted,則出現(xiàn)以下信息。fatalerrorC1083:Cannotopenincludefile:'basetsd.h':Nosuchfileordirectoryerror:command'C:\\ProgramFiles(x86)\\MicrosoftVisualStudio14.0\\VC\\BIN\\x86_amd64\\cl.exe'failedwithexitstatus29.4Scrapy框架安裝
常見安裝問題Twisted安裝出錯(cuò)若未安裝Twisted,則可以單獨(dú)安裝。在瀏覽器中訪問Twisted的下載頁面。pipinstallTwisted20.3.0cp36cp36mwin32.whl在Twisted下載頁面中選擇適合自己電腦的安裝包進(jìn)行安裝。9.4Scrapy框架安裝
常見安裝問題Scrapy框架基本操作9.5使用Scrapy框架開發(fā)網(wǎng)絡(luò)爬蟲程序一般包含4個(gè)步驟,分別為新建Scrapy項(xiàng)目、明確采集目標(biāo)、制作爬蟲和永久存儲(chǔ)數(shù)據(jù)。9.5Scrapy框架基本操作掌握爬蟲項(xiàng)目創(chuàng)建的方式,能夠通過Scrapy命令創(chuàng)建爬蟲項(xiàng)目學(xué)習(xí)目標(biāo)9.5.1新建Scapy項(xiàng)目新建Scrapy項(xiàng)目便是使用Scrapy框架的第一步,主要是將前面提過的各個(gè)組件整合到一起后,方便進(jìn)行統(tǒng)一管理。新建Scrapy項(xiàng)目需要使用如下命令:9.5.1新建Scapy項(xiàng)目scrapystartproject項(xiàng)目名稱例如,使用創(chuàng)建爬蟲項(xiàng)目創(chuàng)建mySpider爬蟲項(xiàng)目。mySpider項(xiàng)目的目錄結(jié)構(gòu)如下所示。9.5.1新建Scapy項(xiàng)目mySpider/:項(xiàng)目的Python模塊,將會(huì)從這里引用代碼。mySpider/spiders/:存放爬蟲代碼的目錄。mySpider/items.py:項(xiàng)目的實(shí)體文件,用于定義項(xiàng)目的目標(biāo)實(shí)體。mySpider/middlewares.py:項(xiàng)目的中間件文件,用于定義爬蟲中間件。mySpider/pipelines.py:項(xiàng)目的管道文件,用于定義項(xiàng)目使用的管道。mySpider/settings.py:項(xiàng)目的設(shè)置文件,用于存儲(chǔ)項(xiàng)目的設(shè)置信息。scrapy.cfg:配置文件,用于存儲(chǔ)項(xiàng)目的配置信息。明確爬蟲項(xiàng)目中明確采集目標(biāo),能夠在Scrapy中添加爬取字段學(xué)習(xí)目標(biāo)9.5.2明確采集目標(biāo)mySpider項(xiàng)目要采集的目標(biāo)數(shù)據(jù)是某培訓(xùn)公司的講師詳情頁中的講師信息,包括講師的姓名、級(jí)別和履歷。9.5.2明確采集目標(biāo)方框標(biāo)注出的講師的姓名、級(jí)別和履歷便是要采集的數(shù)據(jù)。Scrapy中提供了一個(gè)表示實(shí)體數(shù)據(jù)的基類scrapy.Item,用于封裝這些待采集的數(shù)據(jù),在mySpider目錄下的items.py文件中MyspiderItem類中添加抓取的信息。9.5.2明確采集目標(biāo)classMyspiderItem(scrapy.Item):name=scrapy.Field()#表示講師姓名
level=scrapy.Field()#表示講師級(jí)別
resume=scrapy.Field()#表示講師履歷掌握制作Scrapy爬蟲,能夠使用Scrapy提取指定數(shù)據(jù)學(xué)習(xí)目標(biāo)9.5.3制作爬蟲9.5.3制作爬蟲制作爬蟲的流程一般可以分為3步,分別是創(chuàng)建爬蟲、抓取網(wǎng)頁數(shù)據(jù)和解析網(wǎng)頁數(shù)據(jù)。創(chuàng)建爬蟲創(chuàng)建爬蟲主要是為爬蟲起一個(gè)名稱,并規(guī)定該爬蟲的爬取域,也就是要爬取的域名范圍。scrapygenspider爬蟲名稱"爬取域"9.5.3制作爬蟲例如,在命令行窗口中切換當(dāng)前的目錄為子目錄mySpider/spiders,創(chuàng)建一個(gè)名稱為itcast、爬取域?yàn)榈呐老x。scrapygenspideritcast""創(chuàng)建爬蟲在PyCharm中打開mySpider/spiders目錄,可以看到新創(chuàng)建的itcast.py,該文件的內(nèi)容已經(jīng)自動(dòng)生成。importscrapyclassItcastSpider(scrapy.Spider):name='itcast'allowed_domains=['']start_urls=['/']defparse(self,response):passItcastSpider是自動(dòng)生成的類,它繼承自scrapy.Spider類。9.5.3制作爬蟲創(chuàng)建爬蟲ItcastSpider類中包含了3個(gè)屬性和1個(gè)方法,關(guān)于這些屬性和方法的介紹如下。9.5.3制作爬蟲name屬性:表示爬蟲的名稱。爬蟲的名稱必須是唯一的,不同的爬蟲需要有不同的名稱。allowed_domains屬性:表示爬蟲搜索的域名范圍。該屬性用于規(guī)定爬蟲只能抓取指定域名范圍內(nèi)的網(wǎng)頁,忽略不屬于該域名范圍內(nèi)的網(wǎng)頁。start_urls屬性:表示包含起始URL的元組或列表,用于指定爬蟲首次從哪個(gè)網(wǎng)頁開始抓取。parse(self,response)方法:用于解析網(wǎng)頁數(shù)據(jù)(response.body),并返回抽取的數(shù)據(jù)或者新生成的要跟進(jìn)的URL。該方法會(huì)在每個(gè)初始URL完成下載后被調(diào)用,被調(diào)用的時(shí)候傳入從該URL返回的Response對(duì)象作為唯一參數(shù)。創(chuàng)建爬蟲9.5.3制作爬蟲首先對(duì)剛剛生成的ItcastSpider類進(jìn)行修改,為爬蟲指定要抓取的初始URL,具體代碼如下。start_urls=['/channel/teacher.shtml']然后修改parse()方法,在該方法中將response中的內(nèi)容寫入到本地的teacher_info.txt文件中,具體代碼如下。defparse(self,response):withopen("teacher_info.txt","w",encoding="utf-8")asfile:file.write(response.text)創(chuàng)建爬蟲9.5.3制作爬蟲確定了初始URL之后就可以運(yùn)行爬蟲,讓爬蟲根據(jù)該URL抓取網(wǎng)頁數(shù)據(jù)了。運(yùn)行爬蟲的命令格式如下。scrapycrawl爬蟲名稱例如,在命令行窗口中切換當(dāng)前目錄為itcast.py文件所在的目錄,運(yùn)行爬蟲itcast,命令如下。scrapycrawlitcast抓取網(wǎng)頁數(shù)據(jù)9.5.3制作爬蟲抓取網(wǎng)頁數(shù)據(jù)mySpider/spiders目錄中增加了一個(gè)teacher_info.txt文件,打開該文件后可以看到抓取到的網(wǎng)頁源代碼。teacher_info.txt文件內(nèi)容如下。9.5.3制作爬蟲解析網(wǎng)頁數(shù)據(jù)在講師詳情頁選中“黃老師”后右擊,在彈出的右鍵菜單中選擇“檢查”,此時(shí)瀏覽器底部彈出開發(fā)者工具,并定位到文字“黃老師”所對(duì)應(yīng)的元素。9.5.3制作爬蟲解析網(wǎng)頁數(shù)據(jù)在爬蟲項(xiàng)目中定義解析網(wǎng)頁數(shù)據(jù)的代碼,并將解析后的數(shù)據(jù)封裝成MyspiderItem類的對(duì)象,每個(gè)對(duì)象代表著一個(gè)講師的信息。首先,在mySpider/spiders目錄的itcast.py文件中,導(dǎo)入mySpider/items.py中定義的MyspiderItem類。frommySpider.itemsimportMyspiderItem9.5.3制作爬蟲解析網(wǎng)頁數(shù)據(jù)然后,修改ItcastSpider類的parse()方法,將解析后的目標(biāo)數(shù)據(jù)封裝成一個(gè)MyspiderItem對(duì)象,并且將所有的MyspiderItem對(duì)象保存到一個(gè)列表中。defparse(self,response):items=[]#存儲(chǔ)所有講師的信息
foreachinresponse.xpath("http://div[@class='li_txt']"):
item=MyspiderItem()#創(chuàng)建MyspiderItem類的對(duì)象
name=each.xpath("h3/text()").extract()level=each.xpath("h4/text()").extract()resume=each.xpath("p/text()").extract()
item["name"]=name[0]item["level"]=level[0]item["resume"]=resume[0]items.append(item)
returnitems9.5.3制作爬蟲解析網(wǎng)頁數(shù)據(jù)最后,在命令行窗口中再次使用“scrapycrawlitcast”命令運(yùn)行爬蟲itcast,可以看到命令行窗口中打印了獲取到的講師信息。[單擊查看源碼]多學(xué)一招在PyCharm中執(zhí)行爬蟲在PyCharm中執(zhí)行爬蟲itcast具體步驟如下。(1)在PyCharm中打開mySpider項(xiàng)目,在該項(xiàng)目中添加一個(gè)文件start.py,文件中的內(nèi)容具體如下所示:fromscrapyimportcmdlinecmdline.execute("scrapycrawlitcast".split())(2)在PyCharm中運(yùn)行start.py文件,此時(shí)便可以在控制臺(tái)中看到打印的講師信息。
多學(xué)一招Scrapyshell是一個(gè)交互式終端,它可以在不啟動(dòng)爬蟲的情況下嘗試及調(diào)試爬取部分的代碼,也可以測(cè)試XPath路徑表達(dá)式或CSS表達(dá)式是否正確,避免每次修改表達(dá)式后運(yùn)行爬蟲的麻煩。ScrapyShell多學(xué)一招ScrapyShell啟用ScrapyShell啟用Scrapyshell的命令如下所示。scrapyshell<URL>#URL是待抓取URL地址多學(xué)一招啟用ScrapyShell例如,在Windows命令行窗口中輸入“scrapyshell”命令即可啟用Scrapyshell訪問百度首頁,并且終端會(huì)輸出大量提示信息。C:\Users\admin>scrapyshell2021-08-2314:54:29[scrapy.utils.log]INFO:Scrapy2.5.0started(bot:scrapybot).......(省略)2021-08-2314:54:30[scrapy.core.engine]INFO:Spideropened2021-08-2314:54:33[scrapy.core.engine]DEBUG:Crawled(200)<GET>(referer:None)表示訪問網(wǎng)頁結(jié)果為成功ScrapyShell多學(xué)一招在PyCharm中執(zhí)行爬蟲使用ScrapyShellScarpyshell可以看成是一個(gè)在Python終端(或IPython)基礎(chǔ)上添加了擴(kuò)充功能的Python控制臺(tái)程序,這些擴(kuò)充包括若干功能函數(shù)和內(nèi)置對(duì)象。(1)功能函數(shù)shelp():打印可用對(duì)象和功能函數(shù)的幫助列表。fetch(request_or_url):根據(jù)給定的request或URL獲取一個(gè)新的response對(duì)象,并更新原有的相關(guān)對(duì)象。view(response):使用本機(jī)的瀏覽器打開給定的response對(duì)象。ScrapyShell多學(xué)一招使用ScrapyShell(2)內(nèi)置對(duì)象crawler:當(dāng)前Crawler對(duì)象。spider:處理URL的Spider對(duì)象。request:最近獲取到的頁面的Request對(duì)象。response:包含最近獲取到的頁面的Response對(duì)象。settings:當(dāng)前的Scrapysettings。ScrapyShell多學(xué)一招使用ScrapyShell(2)內(nèi)置對(duì)象當(dāng)Scrapyshell載入頁面后,將得到一個(gè)包含Response的本地response變量。若在終端輸入response.body,則可以看到response的請(qǐng)求數(shù)據(jù);若在終端輸入response.headers,則可以看到response的請(qǐng)求頭;若在終端輸入response.selector,則將獲取一個(gè)response初始化的類Selector的對(duì)象(HTML及XML內(nèi)容)。此時(shí)可以通過使用response.selector.xpath()或response.selector.css()對(duì)response進(jìn)行查詢。另外,Scrapy還提供了一些快捷方式,例如response.xpath()或response.css()同樣可以生效。ScrapyShell掌握永久存儲(chǔ)數(shù)據(jù)的方式,能夠通過命令將數(shù)據(jù)保存到本地學(xué)習(xí)目標(biāo)9.5.4永久存儲(chǔ)數(shù)據(jù)永久存儲(chǔ)數(shù)據(jù)是使用Scrapy框架的最后一步操作,主要是對(duì)獲取的目標(biāo)數(shù)據(jù)進(jìn)行永久性存儲(chǔ)。Scrapy中主要有4種方式簡(jiǎn)單保存數(shù)據(jù),這4種方式都是在運(yùn)行爬蟲的命令后面加上-o選項(xiàng),通過該選項(xiàng)輸出指定格式的文件。9.5.4永久存儲(chǔ)數(shù)據(jù)#輸出JSON格式,默認(rèn)為Unicode編碼scrapycrawlitcast-oteachers.json#輸出JSONLines格式,默認(rèn)為Unicode編碼scrapycrawlitcast-oteacher
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024邴雅與薛含關(guān)于債務(wù)承擔(dān)的離婚協(xié)議書
- 2024記賬保密協(xié)議標(biāo)準(zhǔn)
- 2024軟件打車合同糾紛預(yù)防與處理策略分析報(bào)告3篇
- 學(xué)校公共安全教育
- 2025年度項(xiàng)目經(jīng)理合同范本:生物醫(yī)藥項(xiàng)目專業(yè)版3篇
- 2024預(yù)制建筑體系采購及施工管理合同3篇
- 二零二五年度金融行業(yè)客服短期派遣協(xié)議3篇
- 2024高鐵信號(hào)系統(tǒng)安裝分包協(xié)議樣本版B版
- 2025年度承包學(xué)校食堂的學(xué)生就餐體驗(yàn)提升合同3篇
- 2025年數(shù)據(jù)中心建設(shè)承包經(jīng)營合同典范3篇
- 環(huán)衛(wèi)項(xiàng)目年終工作總結(jié)
- (高清版)DZT 0432-2023 煤炭與煤層氣礦產(chǎn)綜合勘查規(guī)范
- 郵政儲(chǔ)蓄銀行-客戶經(jīng)理(個(gè)人消費(fèi)貸款)-試題+答案
- 中國專利獎(jiǎng)申報(bào)要點(diǎn)
- 2024年大學(xué)試題(宗教學(xué))-佛教文化筆試歷年真題薈萃含答案
- 《中外美術(shù)鑒賞》課件西方美術(shù)鑒賞導(dǎo)論
- 中小學(xué)教師違反職業(yè)道德行為處理辦法
- 梁平法制圖規(guī)則及鋼筋翻樣講解
- 乙肝 丙肝培訓(xùn)課件
- 責(zé)任制整體護(hù)理護(hù)理
- 2024屆湖北省武漢實(shí)驗(yàn)外國語學(xué)校數(shù)學(xué)七上期末統(tǒng)考模擬試題含解析
評(píng)論
0/150
提交評(píng)論