新聞中心
創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務(wù)器提供商,新人活動買多久送多久,劃算不套路!
小編給大家分享一下Python中Scrapy框架的簡介,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
Scrapy 框架介紹
Scrapy 是一個基于 Twisted 的異步處理框架,是純 Python 實現(xiàn)的爬蟲框架,其架構(gòu)清晰,模塊之間的耦合程度低,可擴展性極強,可以靈活完成各種需求。我們只需要定制開發(fā)幾個模塊就可以輕松實現(xiàn)一個爬蟲。
1. 架構(gòu)介紹
首先我們來看下 Scrapy 框架的架構(gòu),如圖 13-1 所示:
圖 13-1 Scrapy 架構(gòu)
它可以分為如下的幾個部分。
Engine,引擎,用來處理整個系統(tǒng)的數(shù)據(jù)流處理,觸發(fā)事務(wù),是整個框架的核心。
Item,項目,它定義了爬取結(jié)果的數(shù)據(jù)結(jié)構(gòu),爬取的數(shù)據(jù)會被賦值成該對象。
Scheduler, 調(diào)度器,用來接受引擎發(fā)過來的請求并加入隊列中,并在引擎再次請求的時候提供給引擎。
Downloader,下載器,用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給蜘蛛。
Spiders,蜘蛛,其內(nèi)定義了爬取的邏輯和網(wǎng)頁的解析規(guī)則,它主要負責解析響應(yīng)并生成提取結(jié)果和新的請求。
Item Pipeline,項目管道,負責處理由蜘蛛從網(wǎng)頁中抽取的項目,它的主要任務(wù)是清洗、驗證和存儲數(shù)據(jù)。
Downloader Middlewares,下載器中間件,位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請求及響應(yīng)。
Spider Middlewares, 蜘蛛中間件,位于引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛輸入的響應(yīng)和輸出的結(jié)果及新的請求。
2. 數(shù)據(jù)流
Scrapy 中的數(shù)據(jù)流由引擎控制,其過程如下:
Engine 首先打開一個網(wǎng)站,找到處理該網(wǎng)站的 Spider 并向該 Spider 請求第一個要爬取的 URL。
Engine 從 Spider 中獲取到第一個要爬取的 URL 并通過 Scheduler 以 Request 的形式調(diào)度。
Engine 向 Scheduler 請求下一個要爬取的 URL。
Scheduler 返回下一個要爬取的 URL 給 Engine,Engine 將 URL 通過 Downloader Middlewares 轉(zhuǎn)發(fā)給 Downloader 下載。
一旦頁面下載完畢, Downloader 生成一個該頁面的 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é)束。
通過多個組件的相互協(xié)作、不同組件完成工作的不同、組件對異步處理的支持,Scrapy 大限度地利用了網(wǎng)絡(luò)帶寬,大大提高了數(shù)據(jù)爬取和處理的效率。
3. 項目結(jié)構(gòu)
Scrapy 框架和 pyspider 不同,它是通過命令行來創(chuàng)建項目的,代碼的編寫還是需要 IDE。項目創(chuàng)建之后,項目文件結(jié)構(gòu)如下所示:
scrapy.cfg project/ __init__.py items.py pipelines.py settings.py middlewares.py spiders/ __init__.py spider1.py spider2.py ...
在此要將各個文件的功能描述如下:
scrapy.cfg:它是 Scrapy 項目的配置文件,其內(nèi)定義了項目的配置文件路徑、部署相關(guān)信息等內(nèi)容。
items.py:它定義 Item 數(shù)據(jù)結(jié)構(gòu),所有的 Item 的定義都可以放這里。
pipelines.py:它定義 Item Pipeline 的實現(xiàn),所有的 Item Pipeline 的實現(xiàn)都可以放這里。
settings.py:它定義項目的全局配置。
middlewares.py:它定義 Spider Middlewares 和 Downloader Middlewares 的實現(xiàn)。
spiders:其內(nèi)包含一個個 Spider 的實現(xiàn),每個 Spider 都有一個文件。
看完了這篇文章,相信你對Python中Scrapy框架的簡介有了一定的了解,想了解更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!
網(wǎng)頁標題:Python中Scrapy框架的簡介-創(chuàng)新互聯(lián)
當前地址:http://www.dlmjj.cn/article/hhihc.html