您現在的位置是:首頁 > 綜合

神一般的Scrapy框架,Python中Scrap的基本結構和去重原理

  • 由 網際網路guan察 發表于 綜合
  • 2022-02-15
簡介二、Scrapy五大基本構成:Scrapy框架主要由五大元件組成,它們分別是排程器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實體管道(Item Pipeline)、Scrapy引擎(Scrapy Engi

爬蟲框架是什麼

“Scrapy的基本結構是什麼樣的, Scrapy的指紋去重到底是什麼原理”,面試官經常這麼問。

1。scrapy的基本結構(五個部分都是什麼,請求發出去的整個流程)

2。scrapy的去重原理(指紋去重到底是什麼原理)

看來大家都發現了標題中Scrapy掉了一個y,以後小編會改正的,謝謝大家的提醒

一、Scrapy

Scrapy,Python開發的一個快速、高層次的螢幕抓取和web抓取框架,用於抓取web站點並從頁面中提取結構化的資料。Scrapy用途廣泛,可以用於資料探勘、監測和自動化測試。

其最初是為了頁面抓取 (更確切來說, 網路抓取 )所設計的, 後臺也應用在獲取API所返回的資料(例如 Amazon Associates Web Services ) 或者通用的網路爬蟲。

Scrapy吸引人的地方在於它是一個框架,任何人都可以根據需求方便的修改。它也提供了多種型別爬蟲的基類,如BaseSpider、sitemap爬蟲等,最新版本又提供了web2。0爬蟲的支援。

神一般的Scrapy框架,Python中Scrap的基本結構和去重原理

二、Scrapy五大基本構成:

Scrapy框架主要由五大元件組成,它們分別是排程器(Scheduler)、下載器(Downloader)、爬蟲(Spider)和實體管道(Item Pipeline)、Scrapy引擎(Scrapy Engine)。下面我們分別介紹各個元件的作用。

(1)、排程器(Scheduler):

排程器,說白了把它假設成為一個URL(抓取網頁的網址或者說是連結)的優先佇列,由它來決定下一個要抓取的網址是 什麼,同時去除重複的網址(不做無用功)。使用者可以自己的需求定製排程器。

(2)、下載器(Downloader):

下載器,是所有元件中負擔最大的,它用於高速地下載網路上的資源。Scrapy的下載器程式碼不會太複雜,但效率高,主 要的原因是Scrapy下載器是建立在twisted這個高效的非同步模型上的(其實整個框架都在建立在這個模型上的)。

(3)、 爬蟲(Spider):

爬蟲,是使用者最關心的部份。使用者定製自己的爬蟲,用於從特定的網頁中提取自己需要的資訊,即所謂的實體(Item)。 使用者也可以從中提取出連結,讓Scrapy繼續抓取下一個頁面。

(4)、 實體管道(Item Pipeline):

實體管道,用於處理爬蟲提取的實體。主要的功能是持久化實體、驗證實體的有效性、清除不需要的資訊。

(5)、Scrapy引擎(Scrapy Engine):

Scrapy引擎是整個框架的核心。它用來控制偵錯程式、下載器、爬蟲。實際上,引擎相當於計算機的CPU,它控制著整個流程。

神一般的Scrapy框架,Python中Scrap的基本結構和去重原理

三、Scrapy請求發出去的整個流程

Scrapy執行時,請求發出去的整個流程大概如下:

1。首先爬蟲將需要傳送請求的url(requests)經引擎交給排程器;

2。排序處理後,經ScrapyEngine,DownloaderMiddlewares(有User_Agent, Proxy代理)交給Downloader;

3。Downloader向網際網路傳送請求,並接收下載響應。將響應經ScrapyEngine,可選交給Spiders;

4。Spiders處理response,提取資料並將資料經ScrapyEngine交給ItemPipeline儲存;

5。提取url重新經ScrapyEngine交給Scheduler進行下一個迴圈。直到無Url請求程式停止結束。

四、Scrapy去重原理

神一般的Scrapy框架,Python中Scrap的基本結構和去重原理

1。Scrapy本身自帶有一箇中間件;

2。scrapy原始碼中可以找到一個dupefilters。py去重器;

3。需要將dont_filter設定為False開啟去重,預設是True,沒有開啟去重;

4 。對於每一個url的請求,排程器都會根據請求得相關資訊加密得到一個指紋資訊,並且將指紋資訊和set()集合中的指紋資訊進 行 比對,如果set()集合中已經存在這個資料,就不在將這個Request放入佇列中;

5。如果set()集合中沒有存在這個加密後的資料,就將這個Request物件放入佇列中,等待被排程。

神一般的Scrapy框架,Python中Scrap的基本結構和去重原理

Top