Scrapy框架初識

語言: CN / TW / HK

持續創作,加速成長!這是我參與「掘金日新計劃 · 6 月更文挑戰」的第24天,點選檢視活動詳情

(1)Scrapy模組安裝

scrapy支援Python2.7和python3.4以上版本。

python包可以用全域性安裝(也稱為系統範圍),也可以安裝在使用者空間中。

Windows 一.直接安裝 1.在https://www.lfd.uci.edu/~gohlke/pythonlibs/ 下載對應的Twisted的版本檔案 2. 在命令列進入到Twisted的目錄 執行pip install 加Twisted檔名

3.執行pip install scrapy 二.annaconda 下安裝 (官方推薦) 1.安裝conda conda舊版本 https://docs.anaconda.com/anaconda/packages/oldpkglists/ 安裝方法 https://blog.csdn.net/ychgyyn/article/details/82119201 2. 安裝scrapy conda install scrapy

(2)Scrapy框架簡介

Scrapy是純Python開發的一個高效,結構化的網頁抓取框架。

Scrapy是個啥?

Scrapy是一個為了爬取網站資料,提取結構性資料而編寫的應用框架。 其最初是為了頁面抓取 (更確切來說, 網路抓取 )所設計的,也可以應用在獲取API所返回的資料(例如 Amazon Associates Web Services ) 或者通用的網路爬蟲。 Scrapy用途廣泛,可以用於資料探勘、監測和自動化測試 Scrapy使用了Twisted 非同步網路庫來處理網路通訊。

我們為啥要用這玩意呢?

1.為了更利於我們將精力集中在請求與解析上。 2.企業級的要求。

(3)執行流程

(只要提到框架,就要重視它的執行流程/邏輯順序)

引入:

在這裡插入圖片描述舉個粟子: 大一新生小明開學,他先到新生接待處等待,老學長學姐(管理人員)看到了就會上前詢問你需要幫忙嘛?小明正愁不知道該幹啥,就說我是來報道的大一新生,管理人員聽了就會將你的資訊進行排隊,等排隊到了小明之後,就會將這個號給到管理人員。 然後,管理人員將這個號給到報到處,報到處安排小明的在校資訊,比如:班級,宿舍......並將這些資訊返還給管理人員。管理人員得到之後會再將這些資訊給小明這個大一新生,讓小明核對下這些是不是自己所需的,經小明認真核對之後發現都是自己想要的,小明跟管理人員說:我已經確認過了就這樣哦! 最後,管理人員就會將這些資訊交到資訊管理處進行儲存。

注意:圖中的弧線的意義: 如果,在小明拿到資訊核對之後發現這些不是自己所需的,那麼,小明就會告訴管理人員,這些不是我所要的,我要重新請求一下別的東西,然後管理人員就就會將小明進行重新排隊!!!

1.進入正題:

在這裡插入圖片描述( spiders網頁爬蟲 items專案 engine引擎 scheduler排程器 downloader下載器 item pipelines專案管道 middleware中間裝置,中介軟體 )

資料流: 上圖顯示了Scrapy框架的體系結構及其元件,以及系統內部發生的資料流(由紅色的箭頭顯示。) Scrapy中的資料流由執行引擎控制,流程如下:

首先從網頁爬蟲獲取初始的請求 將請求放入排程模組,然後獲取下一個需要爬取的請求 排程模組返回下一個需要爬取的請求給引擎 引擎將請求傳送給下載器,依次穿過所有的下載中介軟體 一旦頁面下載完成,下載器會返回一個響應包含了頁面資料,然後再依次穿過所有的下載中介軟體。 引擎從下載器接收到響應,然後傳送給爬蟲進行解析,依次穿過所有的爬蟲中介軟體 爬蟲處理接收到的響應,然後解析出item和生成新的請求,併發送給引擎 引擎將已經處理好的item傳送給管道元件,將生成好的新的請求傳送給排程模組,並請求下一個請求 該過程重複,直到排程程式不再有請求為止。

中介軟體介紹:

(1)下載中介軟體 下載中介軟體是位於引擎和下載器之間的特定的鉤子,它們處理從引擎傳遞到下載器的請求,以及下載器傳遞到引擎的響應。 如果你要執行以下操作之一,請使用Downloader中介軟體: 在請求傳送到下載程式之前處理請求(即在scrapy將請求傳送到網站之前) 在響應傳送給爬蟲之前 直接傳送新的請求,而不是將收到的響應傳遞給蜘蛛 將響應傳遞給爬行器而不獲取web頁面; 默默的放棄一些請求

(2)爬蟲中介軟體 爬蟲中介軟體是位於引擎和爬蟲之間的特定的鉤子,能夠處理傳入的響應和傳遞出去的item和請求。 如果你需要以下操作請使用爬蟲中介軟體: 處理爬蟲回撥之後的請求或item 處理start_requests 處理爬蟲異常 根據響應內容呼叫errback而不是回撥請求

2.各個元件介紹:

Scrapy Engine(引擎) 引擎負責控制系統所有元件之間的資料流,並在發生某些操作時觸發事件。

scheduler(排程器) 排程程式接收來自引擎的請求,將它們排入佇列,以便稍後引擎請求它們。

Downloader(下載器) 下載程式負責獲取web頁面並將它們提供給引擎,引擎再將它們提供給spider。

spider(爬蟲) 爬蟲是由使用者編寫的自定義的類,用於解析響應,從中提取資料,或其他要抓取的請求。

Item pipeline(管道) 管道負責在資料被爬蟲提取後進行後續處理。典型的任務包括清理,驗證和永續性(如將資料儲存在資料庫中)

🔆In The End!

👑有關於Me

個人簡介:我是一個硬體出身的計算機愛好者,喜歡program,源於熱愛,樂於分享技術與所見所聞所感所得。文章涉及Python,C,微控制器,HTML/CSS/JavaScript及演算法,資料結構等。

| 從現在做起,堅持下去,一天進步一小點,不久的將來,你會感謝曾經努力的你! | | ------------------------------------ |

認真仔細看完本文的小夥伴們,可以點贊收藏並評論出你們的讀後感。並可關注本博主,在今後的日子裡閱讀更多技術文哦~

如有錯誤或者言語不恰當的地方可在評論區指出,謝謝!\ 如轉載此文請聯絡我徵得本人同意,並標註出處及本博主名,謝謝 !