創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!
小編給大家分享一下Python中Scrapy框架的簡(jiǎn)介,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
Scrapy 框架介紹
Scrapy 是一個(gè)基于 Twisted 的異步處理框架,是純 Python 實(shí)現(xiàn)的爬蟲框架,其架構(gòu)清晰,模塊之間的耦合程度低,可擴(kuò)展性極強(qiáng),可以靈活完成各種需求。我們只需要定制開發(fā)幾個(gè)模塊就可以輕松實(shí)現(xiàn)一個(gè)爬蟲。
1. 架構(gòu)介紹
首先我們來看下 Scrapy 框架的架構(gòu),如圖 13-1 所示:
圖 13-1 Scrapy 架構(gòu)
它可以分為如下的幾個(gè)部分。
Engine,引擎,用來處理整個(gè)系統(tǒng)的數(shù)據(jù)流處理,觸發(fā)事務(wù),是整個(gè)框架的核心。
Item,項(xiàng)目,它定義了爬取結(jié)果的數(shù)據(jù)結(jié)構(gòu),爬取的數(shù)據(jù)會(huì)被賦值成該對(duì)象。
Scheduler, 調(diào)度器,用來接受引擎發(fā)過來的請(qǐng)求并加入隊(duì)列中,并在引擎再次請(qǐng)求的時(shí)候提供給引擎。
Downloader,下載器,用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給蜘蛛。
Spiders,蜘蛛,其內(nèi)定義了爬取的邏輯和網(wǎng)頁的解析規(guī)則,它主要負(fù)責(zé)解析響應(yīng)并生成提取結(jié)果和新的請(qǐng)求。
Item Pipeline,項(xiàng)目管道,負(fù)責(zé)處理由蜘蛛從網(wǎng)頁中抽取的項(xiàng)目,它的主要任務(wù)是清洗、驗(yàn)證和存儲(chǔ)數(shù)據(jù)。
Downloader Middlewares,下載器中間件,位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請(qǐng)求及響應(yīng)。
Spider Middlewares, 蜘蛛中間件,位于引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛輸入的響應(yīng)和輸出的結(jié)果及新的請(qǐng)求。
2. 數(shù)據(jù)流
Scrapy 中的數(shù)據(jù)流由引擎控制,其過程如下:
Engine 首先打開一個(gè)網(wǎng)站,找到處理該網(wǎng)站的 Spider 并向該 Spider 請(qǐng)求第一個(gè)要爬取的 URL。
Engine 從 Spider 中獲取到第一個(gè)要爬取的 URL 并通過 Scheduler 以 Request 的形式調(diào)度。
Engine 向 Scheduler 請(qǐng)求下一個(gè)要爬取的 URL。
Scheduler 返回下一個(gè)要爬取的 URL 給 Engine,Engine 將 URL 通過 Downloader Middlewares 轉(zhuǎn)發(fā)給 Downloader 下載。
一旦頁面下載完畢, Downloader 生成一個(gè)該頁面的 Response,并將其通過 Downloader Middlewares 發(fā)送給 Engine。
Engine 從下載器中接收到 Response 并通過 Spider Middlewares 發(fā)送給 Spider 處理。
Spider 處理 Response 并返回爬取到的 Item 及新的 Request 給 Engine。
Engine 將 Spider 返回的 Item 給 Item Pipeline,將新的 Request 給 Scheduler。
重復(fù)第二步到最后一步,直到 Scheduler 中沒有更多的 Request,Engine 關(guān)閉該網(wǎng)站,爬取結(jié)束。
通過多個(gè)組件的相互協(xié)作、不同組件完成工作的不同、組件對(duì)異步處理的支持,Scrapy 大限度地利用了網(wǎng)絡(luò)帶寬,大大提高了數(shù)據(jù)爬取和處理的效率。
3. 項(xiàng)目結(jié)構(gòu)
Scrapy 框架和 pyspider 不同,它是通過命令行來創(chuàng)建項(xiàng)目的,代碼的編寫還是需要 IDE。項(xiàng)目創(chuàng)建之后,項(xiàng)目文件結(jié)構(gòu)如下所示:
scrapy.cfg project/ __init__.py items.py pipelines.py settings.py middlewares.py spiders/ __init__.py spider1.py spider2.py ...
在此要將各個(gè)文件的功能描述如下:
scrapy.cfg:它是 Scrapy 項(xiàng)目的配置文件,其內(nèi)定義了項(xiàng)目的配置文件路徑、部署相關(guān)信息等內(nèi)容。
items.py:它定義 Item 數(shù)據(jù)結(jié)構(gòu),所有的 Item 的定義都可以放這里。
pipelines.py:它定義 Item Pipeline 的實(shí)現(xiàn),所有的 Item Pipeline 的實(shí)現(xiàn)都可以放這里。
settings.py:它定義項(xiàng)目的全局配置。
middlewares.py:它定義 Spider Middlewares 和 Downloader Middlewares 的實(shí)現(xiàn)。
spiders:其內(nèi)包含一個(gè)個(gè) Spider 的實(shí)現(xiàn),每個(gè) Spider 都有一個(gè)文件。
看完了這篇文章,相信你對(duì)Python中Scrapy框架的簡(jiǎn)介有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)站題目:Python中Scrapy框架的簡(jiǎn)介-創(chuàng)新互聯(lián)
網(wǎng)頁路徑:http://newbst.com/article42/hhihc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航、手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站策劃、微信公眾號(hào)、網(wǎng)站營(yíng)銷
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容