Python Scrapy?框架簡單介紹
一、Scrapy是什么
Scrapy 是一個基于 Twisted 的異步處理框架,是純 Python 實現(xiàn)的爬蟲框架,其架構(gòu)清晰,模塊之間的耦合程度低,可擴展性極強,可以靈活完成各種需求。我們只需要定制開發(fā)幾個模塊就可以輕松實現(xiàn)一個爬蟲。
Scrapy是適用于Python的一個快速、高層次的屏幕抓取和web抓取框架,用于抓取web站點并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測和自動化測試。
Scrapy吸引人的地方在于它是一個框架,任何人都可以根據(jù)需求方便的修改。它也提供了多種類型爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2.0爬蟲的支持。
二、Scrapy優(yōu)點
1、速度快
2、實現(xiàn)大批量爬取
三、Scrapy爬蟲框架的架構(gòu)
(1) Scrapy有五個部分組件組成:
中 > 引擎Scrapy Engine:用來處理整個系統(tǒng)的數(shù)據(jù)流處理、觸發(fā)事務(wù),是整個框架的核心
上 > 調(diào)度器Scheduler:用來接受引擎發(fā)過來的請求并加入隊列中,并在引擎再次請求的時候提供給引擎。
左 > 管道item pipeline:負(fù)責(zé)處理由蜘蛛從網(wǎng)頁中抽取的項目,它的主要任務(wù)是清洗、驗證和存儲數(shù)據(jù)。
下 > 爬蟲器(爬蟲組件) Spiders:其內(nèi)定義了爬取的邏輯和網(wǎng)頁的解析規(guī)則,它主要負(fù)責(zé)解析響應(yīng)并生成提取結(jié)果和新的請求。
Spider Middlewares(Spiders中間件):位于引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛輸入的響應(yīng)和輸出的結(jié)果及新的請求。
右 > 下載器 Downloader:用于下載網(wǎng)頁內(nèi)容,并將網(wǎng)頁內(nèi)容返回給Spiders爬蟲器。
Downloader Middlewares(下載器中間件):位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請求及響應(yīng)。
(2) Scrapy數(shù)據(jù)流機制:
引擎Scrapy Engine : C位,不用做事,接收任務(wù),分發(fā)任務(wù)。
爬蟲器Spiders :
1.確認(rèn)目標(biāo)url,根據(jù)這個url構(gòu)造一個request對象,交給引擎
4.接收了來自引擎的response,進(jìn)行解析,解析完畢,把結(jié)果給引擎
解析結(jié)果分為2種
--(1)如果提取出來的是url,就把所有的步驟重頭再走一遍
--(2)如果是需要進(jìn)行保存的數(shù)據(jù)data調(diào)度器Scheduler:
2.接收了來自引擎的request對象,進(jìn)行一個排序,把排序之后的結(jié)果交給引擎(假設(shè)有100個request對象,安裝調(diào)度,安排誰先誰后).下載器Downloader:
3.接收了來自經(jīng)過了排序之后的引擎的request對象,發(fā)送網(wǎng)絡(luò)請求獲取響應(yīng)對象response,交給引擎.管道item pipeline:
5.接收了來自引擎的數(shù)據(jù)data,進(jìn)行保存.
通過多個組件的相互協(xié)作、不同組件完成工作的不同、組件很好地支持異步處理,scrapy 最大限度地利用了網(wǎng)絡(luò)帶寬,大大提高了數(shù)據(jù)爬取和處理的效率。
四、scrapy創(chuàng)建項目
(1) 爬蟲項目
scrapy startproject 爬蟲項目名
(2) 爬蟲任務(wù)
1. cd 到項目的根目錄
2. scrapy genspider 爬蟲任務(wù)名稱 域的范圍.com
(3)運行scrapy爬蟲
scrapy crawl 爬蟲任務(wù)名稱
(4) Scrapy創(chuàng)建結(jié)構(gòu)圖
各個文件的功能描述如下:
- 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 都有一個文件。
到此這篇關(guān)于Scrapy框架介紹的文章就介紹到這了,更多相關(guān)Scrapy框架內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用AJAX和Django獲取數(shù)據(jù)的方法實例
這篇文章主要給大家介紹了關(guān)于使用AJAX和Django獲取數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10