您好,登錄后才能下訂單哦!
小編給大家分享一下Python中Scrapy框架的簡介,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!
Scrapy 框架介紹
Scrapy 是一個基于 Twisted 的異步處理框架,是純 Python 實現的爬蟲框架,其架構清晰,模塊之間的耦合程度低,可擴展性極強,可以靈活完成各種需求。我們只需要定制開發幾個模塊就可以輕松實現一個爬蟲。
1. 架構介紹
首先我們來看下 Scrapy 框架的架構,如圖 13-1 所示:
圖 13-1 Scrapy 架構
它可以分為如下的幾個部分。
Engine,引擎,用來處理整個系統的數據流處理,觸發事務,是整個框架的核心。
Item,項目,它定義了爬取結果的數據結構,爬取的數據會被賦值成該對象。
Scheduler, 調度器,用來接受引擎發過來的請求并加入隊列中,并在引擎再次請求的時候提供給引擎。
Downloader,下載器,用于下載網頁內容,并將網頁內容返回給蜘蛛。
Spiders,蜘蛛,其內定義了爬取的邏輯和網頁的解析規則,它主要負責解析響應并生成提取結果和新的請求。
Item Pipeline,項目管道,負責處理由蜘蛛從網頁中抽取的項目,它的主要任務是清洗、驗證和存儲數據。
Downloader Middlewares,下載器中間件,位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請求及響應。
Spider Middlewares, 蜘蛛中間件,位于引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛輸入的響應和輸出的結果及新的請求。
2. 數據流
Scrapy 中的數據流由引擎控制,其過程如下:
Engine 首先打開一個網站,找到處理該網站的 Spider 并向該 Spider 請求第一個要爬取的 URL。
Engine 從 Spider 中獲取到第一個要爬取的 URL 并通過 Scheduler 以 Request 的形式調度。
Engine 向 Scheduler 請求下一個要爬取的 URL。
Scheduler 返回下一個要爬取的 URL 給 Engine,Engine 將 URL 通過 Downloader Middlewares 轉發給 Downloader 下載。
一旦頁面下載完畢, Downloader 生成一個該頁面的 Response,并將其通過 Downloader Middlewares 發送給 Engine。
Engine 從下載器中接收到 Response 并通過 Spider Middlewares 發送給 Spider 處理。
Spider 處理 Response 并返回爬取到的 Item 及新的 Request 給 Engine。
Engine 將 Spider 返回的 Item 給 Item Pipeline,將新的 Request 給 Scheduler。
重復第二步到最后一步,直到 Scheduler 中沒有更多的 Request,Engine 關閉該網站,爬取結束。
通過多個組件的相互協作、不同組件完成工作的不同、組件對異步處理的支持,Scrapy 最大限度地利用了網絡帶寬,大大提高了數據爬取和處理的效率。
3. 項目結構
Scrapy 框架和 pyspider 不同,它是通過命令行來創建項目的,代碼的編寫還是需要 IDE。項目創建之后,項目文件結構如下所示:
scrapy.cfg project/ __init__.py items.py pipelines.py settings.py middlewares.py spiders/ __init__.py spider1.py spider2.py ...
在此要將各個文件的功能描述如下:
scrapy.cfg:它是 Scrapy 項目的配置文件,其內定義了項目的配置文件路徑、部署相關信息等內容。
items.py:它定義 Item 數據結構,所有的 Item 的定義都可以放這里。
pipelines.py:它定義 Item Pipeline 的實現,所有的 Item Pipeline 的實現都可以放這里。
settings.py:它定義項目的全局配置。
middlewares.py:它定義 Spider Middlewares 和 Downloader Middlewares 的實現。
spiders:其內包含一個個 Spider 的實現,每個 Spider 都有一個文件。
看完了這篇文章,相信你對Python中Scrapy框架的簡介有了一定的了解,想了解更多相關知識,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。