版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
使用Scrapy爬蟲框架采集數(shù)據(jù)——爬取汽車之家數(shù)據(jù) 本章學(xué)習(xí)目標(biāo)了解Scrapy爬蟲框架的工作原理了解Scrapy爬蟲框架的安裝過程以及各組件的基本含義和用法掌握Scrapy爬蟲框架采集數(shù)據(jù)的實(shí)例Scrapy引擎是控制整個系統(tǒng)的數(shù)據(jù)處理流程,觸發(fā)事務(wù)處理流程,負(fù)責(zé)串聯(lián)各個模塊,還有Scheduler(調(diào)度器),Downloader(下載器),Spiders(蜘蛛),ItemPipeline(項(xiàng)目管道),Middlewares(中間件)等組鍵,Scrapy爬蟲框架可以很方便的完成網(wǎng)上數(shù)據(jù)的采集工作,簡單輕巧,使用起來非常方便。6.1任務(wù)描述本章將介紹Scrapy爬蟲框架的工作原理,安裝過程以及各組件的基本作用和用法,使用Scrapy爬蟲框架創(chuàng)建一個Scrapy項(xiàng)目,編寫網(wǎng)絡(luò)爬蟲爬取和抽取汽車之家的數(shù)據(jù),使用命令將數(shù)據(jù)輸出存入MySQL中。6.2.1Scrapy的概述Scrapy是一個用于抓取web站點(diǎn)和提取結(jié)構(gòu)化數(shù)據(jù)的應(yīng)用框架,可用于數(shù)據(jù)挖掘、信息處理或歷史檔案等廣泛的應(yīng)用。雖然Scrapy設(shè)計(jì)的初衷是服務(wù)于網(wǎng)頁數(shù)據(jù)抽取,但是它也能夠使用APIs抽取數(shù)據(jù)或者作為一種通用目的網(wǎng)絡(luò)爬蟲使用。Scrapy的一個主要優(yōu)點(diǎn):請求是異步調(diào)度和處理的。這意味著Scrapy不需要等待一個請求完成和處理,它可以同時發(fā)送另一個請求或做其他事情。這也意味著,即使某些請求失敗或在處理它時發(fā)生錯誤,其他請求也可以繼續(xù)運(yùn)行。雖然這使您能夠非??焖俚嘏廊?shù)據(jù)(同時以容錯的方式發(fā)送多個并發(fā)請求),但Scrapy還可以通過一些更為友好地方式設(shè)置控制爬取的程度。您可以在每個請求之間設(shè)置下載延遲,限制每個域或每個IP的并發(fā)請求數(shù)量,甚至可以使用自動調(diào)整擴(kuò)展來計(jì)算這些請求。6.2Scrapy6.2.2Scrapy的工作原理Scrapy的工作原理如圖6-1所示。圖6-1Scrapy工作原理Spider打開某網(wǎng)頁,獲取到一個或者多個Requests,經(jīng)由ScrapyEngine傳送給調(diào)度器Scheduler。如果Request特別多并且速度特別快會在Scheduler形成請求隊(duì)列queue,由Scheduler安排執(zhí)行
Schelduler會按照一定的次序取出請求,經(jīng)由引擎,下載器中間件,發(fā)送給下載器Dowmloader。這里的下載器中間件是設(shè)定在請求執(zhí)行前,因此可以設(shè)定代理,請求頭,Cookie等下載下來的網(wǎng)頁數(shù)據(jù)再次經(jīng)過下載器中間件,經(jīng)過引擎,經(jīng)過爬蟲中間件傳送給爬蟲Spiders。這里的下載器中間件是設(shè)定在請求執(zhí)行后,因此可以修改請求的結(jié)果。這里的爬蟲中間件是設(shè)定在數(shù)據(jù)或者請求到達(dá)爬蟲之前,與下載器中間件有類似的功能。由爬蟲Spider對下載下來的數(shù)據(jù)進(jìn)行解析,按照Item設(shè)定的數(shù)據(jù)結(jié)構(gòu)經(jīng)由爬蟲中間件,引擎發(fā)送給項(xiàng)目管道Itempipeline。這里的項(xiàng)目管道Itempipeline可以對數(shù)據(jù)進(jìn)行進(jìn)一步的清洗,存儲等操作。這里爬蟲極有可能從數(shù)據(jù)中解析到進(jìn)一步的請求Request,它會把請求經(jīng)由引擎重新發(fā)送給調(diào)度器Scheduler,調(diào)度器循環(huán)執(zhí)行上述操作。項(xiàng)目管道Itempipeline管理著最后的輸出,如輸出到數(shù)據(jù)庫中。Scrapy在Python(默認(rèn)Python實(shí)現(xiàn))和PyPy(從PyPy5.9開始)下運(yùn)行于Python2.7和Python3.4或以上。如果您正在使用Anaconda或Miniconda,您可以從conda-forge通道安裝包,該通道具有最新的Linux、Windows和OSX包。使用conda命令安裝Scrapycondainstall-cconda-forgescrapy或者,如果您已經(jīng)熟悉Python包的安裝,您可以通過以下方式從PyPI安裝Scrapy及其依賴項(xiàng)pipinstallScrapy。請注意,有時這可能需要根據(jù)您的操作系統(tǒng)解決一些Scrapy依賴項(xiàng)的編譯問題,因此請務(wù)必檢查特定于平臺的安裝說明。在此,強(qiáng)烈建議讀者在專用的virtualenv中安裝Scrapy,以避免與系統(tǒng)包發(fā)生沖突。在conda中可以建立多個虛擬環(huán)境,用于隔離不同項(xiàng)目所需的不同版本的工具包,以防止版本上的沖突。對糾結(jié)于Python版本的同學(xué)們,也可以建立Python2和Python3兩個環(huán)境,來分別運(yùn)行不同版本的Python代碼。6.2.3Scrapy安裝 雖然可以使用pip在Windows上安裝Scrapy,但是建議您安裝Anaconda或Miniconda,并使用來自conda-forge通道的包,這樣可以避免大多數(shù)安裝問題。condainstall-cconda-forgescrapy由于Scrapy是用純Python編寫的,它依賴于幾個關(guān)鍵的Python包,因此您使用PyPI安裝Scrapy及其依賴項(xiàng),您需要安裝以下內(nèi)容:lxml:一種高效的XML和HTML解析器。使用命令pipinstalllxml安裝。parsel:一個HTML/XML數(shù)據(jù)提取庫,基于上面的lxml。使用命令pipinstallparsel安裝。w3lib:一種處理URL和網(wǎng)頁編碼多功能輔助。使用命令pipinstallw3lib安裝。twisted,:一個異步網(wǎng)絡(luò)框架。使用命令pipinstalltwisted安裝。pyOpenSSL,處理各種網(wǎng)絡(luò)級安全需求。使用命令pipinstallpyOpenSSL安裝。在Windows下安裝Scrapy Scrapy測試的最小版本有Twisted14.0、lxml3.4、pyOpenSSL0.14。Scrapy可以使用這些包的舊版本,但不能保證它會繼續(xù)工作,因?yàn)樗鼪]有針對這些包進(jìn)行測試。其中一些包本身依賴于非python包,根據(jù)平臺的不同,這些包可能需要額外的安裝步驟。因此,這里建議在所有平臺上的虛擬環(huán)境中安裝Scrapy。當(dāng)成功安裝Scrapy之后,在cmd中輸入Scrapy即可看到以下內(nèi)容,如圖6-2所示。圖6-2Scrapy安裝驗(yàn)證
然后在cmd中開啟Python解釋器,輸入importscrapy,如果沒有報錯,則成功導(dǎo)入scrapy,如圖6-3所示。圖6-3在Python中導(dǎo)入ScrapyLinux下安裝Scrapy 與前面Winodws環(huán)境下安裝Scrapy一樣,在Linux環(huán)境下安裝Scrapy同樣需要安裝相應(yīng)的依賴包。1.在CentOS和RedHat中需要安裝如下依賴包sudoyumgroupinstall-ydevelopmenttoolssudoyuminstall-yepel-releaselibxslt-devellibxml2-developenssl-devel然后,使用pip安裝Scrapy。pipinstallScrapy2.在Ubuntu和De
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 進(jìn)修完畢出科心得體會2000字(13篇)
- 板式換熱器安裝施工方案
- 2025年時尚雜志排版印刷設(shè)計(jì)制作委托合同3篇
- 課程設(shè)計(jì)面包板
- 二零二五年度美縫施工項(xiàng)目合同糾紛解決協(xié)議4篇
- 2024年新疆安全員C證考試題庫附答案
- 二零二五版體育賽事贊助與冠名權(quán)合同4篇
- 二零二五年度生態(tài)公園施工合同補(bǔ)充協(xié)議2篇
- 銷售管理什么課程設(shè)計(jì)
- 2024版離婚民政局離婚協(xié)議書
- 拆遷評估機(jī)構(gòu)選定方案
- 床旁超聲監(jiān)測胃殘余量
- 上海市松江區(qū)市級名校2025屆數(shù)學(xué)高一上期末達(dá)標(biāo)檢測試題含解析
- 綜合實(shí)踐活動教案三上
- 《新能源汽車電氣設(shè)備構(gòu)造與維修》項(xiàng)目三 新能源汽車照明與信號系統(tǒng)檢修
- 2024年新課標(biāo)《義務(wù)教育數(shù)學(xué)課程標(biāo)準(zhǔn)》測試題(附含答案)
- 醫(yī)院培訓(xùn)課件:《靜脈中等長度導(dǎo)管臨床應(yīng)用專家共識》
- 趣味知識問答100道
- 中國國際大學(xué)生創(chuàng)新大賽與“挑戰(zhàn)杯”大學(xué)生創(chuàng)業(yè)計(jì)劃競賽(第十一章)大學(xué)生創(chuàng)新創(chuàng)業(yè)教程
- 鋼管豎向承載力表
- 2024年新北師大版八年級上冊物理全冊教學(xué)課件(新版教材)
評論
0/150
提交評論