




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
項(xiàng)目四
基于框架實(shí)現(xiàn)動(dòng)態(tài)網(wǎng)頁數(shù)據(jù)采集與存儲(chǔ)目錄Content1使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)項(xiàng)目導(dǎo)言零
Scrapy是Python的一個(gè)應(yīng)用Twisted異步處理的第三方應(yīng)用程序框架,用戶只需要定制開發(fā)幾個(gè)模塊即可實(shí)現(xiàn)一個(gè)爬蟲,用來快速爬取網(wǎng)站并從頁面中抓取網(wǎng)頁內(nèi)容以及各種圖片。學(xué)習(xí)目標(biāo)零知識目標(biāo)了解Scrapy相關(guān)概念熟悉Scrapy框架的設(shè)置掌握文本解析與內(nèi)容存儲(chǔ)精通內(nèi)存存儲(chǔ)邏輯技能目標(biāo)具備項(xiàng)目創(chuàng)建的能力具備使用Scrapy操作命令創(chuàng)建Scrapy項(xiàng)目的能力具備解析網(wǎng)頁中文本的能力具備網(wǎng)頁數(shù)據(jù)采集能力素養(yǎng)目標(biāo)具有較好的團(tuán)隊(duì)精神具有高度的責(zé)任感具備很強(qiáng)的學(xué)習(xí)和溝通能力具有清晰思路、較強(qiáng)的邏輯思維能力任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹任務(wù)技能Scrapy簡介及安裝Scrapy簡介、Scrapy安裝、Scrapy項(xiàng)目結(jié)構(gòu)、Scrapy項(xiàng)目構(gòu)建流程Scrapy操作指令在操作系統(tǒng)的任何位置均可以使用的全局命令應(yīng)用于Scrapy項(xiàng)目中的項(xiàng)目命令字段定義及Scrapy設(shè)置自定義字段、項(xiàng)目設(shè)置、通用參數(shù)設(shè)置文本解析XPath選擇器、CSS選擇器內(nèi)容存儲(chǔ)文件存儲(chǔ)、管道存儲(chǔ)任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹1Scrapy簡介及安裝Scrapy是Python的一個(gè)第三方應(yīng)用程序框架,主要用于爬取網(wǎng)站并從頁面中提取結(jié)構(gòu)數(shù)據(jù)。(1)Scrapy簡介任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹ItemPipeline管道,負(fù)責(zé)處理Spider中獲取到的Item,并進(jìn)行詳細(xì)分析、過濾、存儲(chǔ)等內(nèi)容的后期處理。Spiders爬蟲,主要用于對Response進(jìn)行處理,從特定的網(wǎng)頁中分析提取數(shù)據(jù),并在獲取Item字段需要的數(shù)據(jù)后,將網(wǎng)絡(luò)地址提交給引擎,再次進(jìn)入Scheduler。Scheduler即調(diào)度器,接收ScrapyEngine的Request請求,多個(gè)請求會(huì)在整理排序后,等待ScrapyEngine需要時(shí)返回給ScrapyEngine。Scrapy
EngineScrapy引擎,能夠進(jìn)行系統(tǒng)數(shù)據(jù)流的處理、事務(wù)的觸發(fā)等,完成Spiders、ItemPipeline、Downloader、Scheduler等模塊之間數(shù)據(jù)的傳輸、信號的傳遞。Downloader下載器,通過ScrapyEngine的Requests請求下載網(wǎng)頁內(nèi)容,并返回包含網(wǎng)頁內(nèi)容的Response,然后由ScrapyEngine提交給Spiders進(jìn)行處理。Scrapy框架任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(2)Scrapy安裝Scrapy屬于Python的第三方框架,可以使用pip安裝、wheel安裝和源碼安裝等安裝方式,并且在通過pip方式安裝Scrapy時(shí),會(huì)自動(dòng)安裝lxml、pyOpenSSL、Twisted、PyWin32等相關(guān)的依賴庫。打開cmd命令窗口,輸入“pipinstallscrapy”進(jìn)入Python的交互式命令行,通過import引入Scrapy進(jìn)行安裝驗(yàn)證Step1Step2任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(3)Scrapy項(xiàng)目結(jié)構(gòu)任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹01030405060702items.py字段定義文件scrapy.cfg項(xiàng)目配置文件middlewares.py中間件設(shè)置文件spiders爬蟲文件存儲(chǔ)目錄settings.py項(xiàng)目設(shè)置文件pipelines.py項(xiàng)目管道文件MySpider.py爬蟲文件任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(4)Scrapy項(xiàng)目構(gòu)建流程通過Xpath或CSS選擇器解析XML文檔6文本解析在爬蟲文件中,根據(jù)需求選擇通用參數(shù),爬取頁面數(shù)據(jù)5通用參數(shù)設(shè)置4項(xiàng)目設(shè)置修改settings.py文件對項(xiàng)目名稱、并發(fā)請求、爬取策略、項(xiàng)目管道等進(jìn)行設(shè)置3爬蟲文件創(chuàng)建通過genspider命令在spiders目錄中創(chuàng)建爬蟲文件2字段定義修改items.py文件代碼,明確抓取的目標(biāo)字段7修改pipelines.py代碼,通過管道的設(shè)置實(shí)現(xiàn)爬取內(nèi)容的存儲(chǔ)數(shù)據(jù)存儲(chǔ)1項(xiàng)目創(chuàng)建通過startproject命令創(chuàng)建爬蟲項(xiàng)目任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹2Scrapy操作指令全局命令命令描述-h查看可用命令的列表fetch使用Scrapydownloader提取的URLrunspider未創(chuàng)建項(xiàng)目的情況下,運(yùn)行一個(gè)編寫好的spider模塊settings規(guī)定項(xiàng)目的設(shè)定值shell給定URL的一個(gè)交互式模塊startproject用于創(chuàng)建項(xiàng)目version顯示Scrapy版本view使用Scrapydownloader提取URL并顯示在瀏覽器中的內(nèi)容genspider使用內(nèi)置模板在spiders文件下創(chuàng)建一個(gè)爬蟲文件bench測試scrapy在硬件上運(yùn)行的效率任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹項(xiàng)目命令命令描述crawl用來使用爬蟲抓取數(shù)據(jù),運(yùn)行項(xiàng)目check檢查項(xiàng)目并由crawl命令返回list顯示本項(xiàng)目中可用爬蟲(spider)的列表edit可以通過編輯器編輯爬蟲parse通過爬蟲分析給定的URL任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹3字段定義及Scrapy設(shè)置(1)自定義字段
在進(jìn)行網(wǎng)頁內(nèi)容的爬取時(shí),明確目標(biāo)是不可或缺的一個(gè)步驟。在Scrapy中,通過修改items.py文件中代碼進(jìn)行字段的自定義操作即可明確爬取的目標(biāo)。語法格式:#導(dǎo)入scrapy模塊importscrapy#定義包含scrapy.Item參數(shù)的類classScrapynameItem(scrapy.Item):#definethefieldsforyouritemherelike:#自定義字段name=scrapy.Field()#通過提示pass任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹除了通過“scrapy.Field()”方法外,還可以通過import命令從Scrapy中先引入Item和Field,之后直接使用即可。語法格式:#導(dǎo)入scrapy的Item參數(shù)和Field方法fromscrapyimportItem,Field#定義包含scrapy.Item參數(shù)的類classScrapynameItem(Item):#自定義字段name=Field();#通過提示pass任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹items.py文件中包含的內(nèi)容僅為字段的定義,還需在MySpider.py文件中通過類名稱引入items.py文件中class定義的類并實(shí)例化字段對象,之后通過“對象[字段名稱]=值”的方式進(jìn)行賦值操作。語法格式:importscrapy#導(dǎo)入ScrapynameItem類fromScrapyName.itemsimportScrapynameItemclassMyspiderSpider(scrapy.Spider):defparse(self,response):item=ScrapynameItem()item["name"]="值"任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(2)項(xiàng)目設(shè)置Scrapy中項(xiàng)目的設(shè)置通過settings.py文件,通過指定項(xiàng)目屬性和屬性值定義設(shè)置項(xiàng)目,包括項(xiàng)目名稱設(shè)置、并發(fā)請求設(shè)置、爬蟲中間件設(shè)置等。任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(3)通用參數(shù)設(shè)置通用spider參數(shù)參數(shù)描述scrapy.Spider通用SpiderCrawlSpider指定規(guī)則爬取網(wǎng)站XMLFeedSpider通過迭代節(jié)點(diǎn)分析XML內(nèi)容任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(1)XPath選擇器4文本解析符號和方法描述nodeName選取此節(jié)點(diǎn)的所有節(jié)點(diǎn)/根節(jié)點(diǎn)//選擇文檔中的所有匹配節(jié)點(diǎn).當(dāng)前節(jié)點(diǎn)..當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn)@選取屬性*匹配任何元素節(jié)點(diǎn)@*匹配任何屬性節(jié)點(diǎn)Node()匹配任何類型的節(jié)點(diǎn)text()獲取文本內(nèi)容Xpath路徑表達(dá)式包含符號和方法任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹在Scrapy中,路徑表達(dá)式通過xpath()方法應(yīng)用。語法格式:importscrapy#從scrapy.selector中導(dǎo)入Selectorfromscrapy.selectorimportSelectorclassMyspiderSpider(scrapy.Spider):name='MySpider'allowed_domains=['域名列表']start_urls=['網(wǎng)址列表']defparse(self,response):#構(gòu)造Selector實(shí)例sel=Selector(response)#解析HTMLxpath=sel.xpath('表達(dá)式')pass任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹
在Scrapy中,CSS路徑表達(dá)式通過css()方法應(yīng)用。(2)CSS選擇器語法格式:importscrapy#從scrapy.selector中導(dǎo)入Selectorfromscrapy.selectorimportSelectorclassMyspiderSpider(scrapy.Spider):name='MySpider'allowed_domains=['域名列表']start_urls=['網(wǎng)址列表']defparse(self,response):#構(gòu)造Selector實(shí)例sel=Selector(response)#解析HTMLcss=sel.css('表達(dá)式')pass任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(1)文件存儲(chǔ)5內(nèi)容存儲(chǔ)語法格式:scrapycrawl爬蟲文件名稱path在Scrapy中,可以使用crawl命令的“-o”參數(shù),在運(yùn)行Scrapy項(xiàng)目時(shí)將數(shù)據(jù)保存到本地JSON、CSV等文件中。任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹(2)管道存儲(chǔ)語法格式:ITEM_PIPELINES={'ScrapyProject.pipelines.ScrapyprojectPipeline':300,}Scrapy中管道的使用需要先在settings.py文件添加ITEM_PIPELINES參數(shù),進(jìn)行管道的啟用。任務(wù)4-1:使用Scrapy框架完成新聞公告頁面數(shù)據(jù)采集與存儲(chǔ)壹ITEM_PIPELINES參數(shù)說明參數(shù)描述ScrapyProject項(xiàng)目名稱pipelines管道文件名稱ScrapyprojectPipeline'管道中包含的類名稱300執(zhí)行管道的優(yōu)先級,值為0~1000,數(shù)字越小,管道的優(yōu)先級越高,優(yōu)先調(diào)用4-1:任務(wù)實(shí)施貳切換到命令行,進(jìn)入PressRelease的項(xiàng)目,使用genspider命令在spiders目錄中創(chuàng)建一個(gè)名為job的爬
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中原地產(chǎn)手房買賣合同
- 學(xué)校采購校服合同
- 工地門窗安裝合同
- 建設(shè)工程勞務(wù)分包合同
- 場地汽車租賃合同
- 污水處理廠施工合同
- 漳州理工職業(yè)學(xué)院《飛機(jī)液壓與燃油系統(tǒng)》2023-2024學(xué)年第二學(xué)期期末試卷
- 漳州理工職業(yè)學(xué)院《室內(nèi)模型設(shè)計(jì)》2023-2024學(xué)年第二學(xué)期期末試卷
- 江西水利職業(yè)學(xué)院《現(xiàn)代儀器分析綜合實(shí)驗(yàn)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京郵電大學(xué)世紀(jì)學(xué)院《物流管理》2023-2024學(xué)年第二學(xué)期期末試卷
- CentOS 7系統(tǒng)配置與管理(Linux 試題庫) 習(xí)題答案 (楊海艷 第2版)
- 中國氫內(nèi)燃機(jī)行業(yè)發(fā)展環(huán)境、市場運(yùn)行格局及前景研究報(bào)告-智研咨詢(2024版)
- 開學(xué)季初三沖刺中考開學(xué)第一課為夢想加油課件
- 2025年四川綿陽科技城新區(qū)投資控股集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- 2024年湖南高速鐵路職業(yè)技術(shù)學(xué)院高職單招數(shù)學(xué)歷年參考題庫含答案解析
- 2024年沙洲職業(yè)工學(xué)院高職單招語文歷年參考題庫含答案解析
- 2024年廣東省《輔警招聘考試必刷500題》考試題庫【學(xué)生專用】
- 2025年人教版英語五年級下冊教學(xué)進(jìn)度安排表
- 水文工程施工方案
- 學(xué)校食堂餐廳管理者食堂安全考試題附答案
- 2025延長石油(集團(tuán))限責(zé)任公司社會(huì)招聘高頻重點(diǎn)提升(共500題)附帶答案詳解
評論
0/150
提交評論