python scrapy框架簡介及抓取流程

scrapy框架簡介及抓取流程

Scrapy簡介

​ Scrapy是一個爲了爬取網站數據,提取結構性數據而編寫的應用框架。
 ScrapyCrawl則是在Scrapy基礎上進一步處理數據的爬蟲框架

Scrapy執行流程圖
執行流程圖
Scrapy主要包括了以下組件:

引擎(Scrapy): 用來處理整個系統的數據流處理, 觸發事務(框架核心)

調度器(Scheduler): 用來接受引擎發過來的請求, 壓入隊列中, 並在引擎再次請求的時候返回. 
				 可以想像成一個URL(抓取網頁的網址或者說是鏈接)的優先隊列, 
				 由它來決定下一個要抓取的網址是什麼, 同時去除重複的網址
				 
下載器(Downloader): 用於下載網頁內容, 並將網頁內容返回給蜘蛛(Scrapy下載器是建立在
					twisted這個高效的異步模型上的)
					
爬蟲(Spiders): 爬蟲是主要幹活的, 用於從特定的網頁中提取自己需要的信息, 即所謂的實體(Item)。
			  用戶也可以從中提取出鏈接,讓Scrapy繼續抓取下一個頁面
			  
項目管道(Pipeline): 負責處理爬蟲從網頁中抽取的實體,主要的功能是持久化實體、驗證實體的有效性、清除不需要的信息。
				   當頁面被爬蟲解析後,將被髮送到項目管道,並經過幾個特定的次序處理數據。
				   
下載器中間件(Downloader Middlewares): 位於Scrapy引擎和下載器之間的框架,主要是處理Scrapy引擎與
								  下載器之間的請求及響應。
								  
爬蟲中間件(Spider Middlewares): 介於Scrapy引擎和爬蟲之間的框架,主要工作是處理蜘蛛的響應輸入和請求輸出。

調度中間件(Scheduler Middewares): 介於Scrapy引擎和調度之間的中間件,從Scrapy引擎發送到調度的請求和響應。

相關網站

Scrapy運行流程:

1,引擎打開一個網站(open a domain),找到處理該網站的Spider並向該spider請求第一個要爬取的URL(s)。
2,引擎從Spider中獲取到第一個要爬取的URL並在調度器(Scheduler)以Request調度。
3,引擎向調度器請求下一個要爬取的URL。
4,調度器返回下一個要爬取的URL給引擎,引擎將URL通過下載中間件(請求(request)方向)轉發給下載器(Downloader)。
5,一旦頁面下載完畢,下載器生成一個該頁面的Response,並將其通過下載中間件(返回(response)方向)發送給引擎。
6,引擎從下載器中接收到Response並通過Spider中間件(輸入方向)發送給Spider處理。
7,Spider處理Response並返回爬取到的Item及(跟進的)新的Request給引擎。
8,引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調度器。
9,(從第二步)重複直到調度器中沒有更多地request,引擎關閉該網站

Scrapy 常用命令

srapy startproject xxx		創建爬蟲項目
scrapy crawl spider_name	啓動爬蟲
scrapy runspider spider_file.py	在爲創建項目的情況下,運行一個編寫在Python文件中的spider
scrapy genspider [-t template] <name> <domain>	在當前項目中創建spider
scrapy list		列出所有爬蟲
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章