Python爬蟲之Scrapy學習(基礎篇)

2021-09-13 23:42:57 字數 3077 閱讀 4625

在爬蟲的路上,學習scrapy是乙個必不可少的環節。也許有好多朋友此時此刻也正在接觸並學習scrapy,那麼很好,我們一起學習。開始接觸scrapy的朋友可能會有些疑惑,畢竟是乙個框架,上來不知從何學起。從本篇起,博主將開啟scrapy學習的系列,分享如何快速入門scrapy並熟練使用它。

本篇作為第一篇,主要介紹和了解scrapy,在結尾會向大家推薦一本關於學習scrapy的書,以及獲取的方式。

如果你對爬蟲的基礎知識有了一定了解的話,那麼是時候該了解一下爬蟲框架了。那麼為什麼要使用爬蟲框架?

博主當時是根據這幾點來進行爬蟲框架的學習的,但是切記核心目標是掌握一種框架思想,一種框架的能力,掌握了這種思想你才能更好的去使用它,甚至擴充套件它。

比較流行的爬蟲的框架有scrapypyspider,但是被大家所鍾愛的我想非scrapy莫屬了。scrapy是乙個開源的高階爬蟲框架,我們可以稱它為"scrapy語言"。它使用python編寫,用於爬取網頁,提取結構性資料,並可將抓取得結構性資料較好的應用於資料分析和資料探勘。scrapy有以下的一些特點:

有的朋友問了,為什麼要使用scrapy,不使用不行嗎?用resquests + beautifulsoup組合難道不能完成嗎?

不用糾結,根據自己方便來。resquests + beautifulsoup當然可以了,requests + 任何解析器都行,都是非常好的組合。這樣用的優點是我們可以靈活的寫我們自己的**,不必拘泥於固定模式。對於使用固定的框架有時候不一定用起來方便,比如scrapy對於反反爬的處理並沒有很完善,好多時候也要自己來解決。

但是對於一些中小型的爬蟲任務來講,scrapy確實是非常好的選擇,它避免了我們來寫一些重複的**,並且有著出色的效能。我們自己寫**的時候,比如為了提高爬取效率,每次都自己碼多執行緒或非同步等**,大大浪費了開發時間。這時候使用已經寫好的框架是再好不過的選擇了,我們只要簡單的寫寫解析規則和pipeline就好了。那麼具體哪些是需要我們做的呢?看看下面這個圖就明白了。

因此,對於該用哪個,根據個人需求和喜好決定。但是至於學習的先後順序,博主建議先學學resquests + beautifulsoup,然後再接觸scrapy效果可能會更好些,僅供參考。

在學習scrapy之前,我們需要了解scrapy的架構,明白這個架構對學習scrapy至關重要。

scrapy官方文件的

下面的描述引自官方doc文件(在此引用),講的很清楚明白,對照這個圖看就能明白。

scrapy engine

引擎負責控制資料流在系統中所有元件中流動,並在相應動作發生時觸發事件。 詳細內容檢視下面的資料流(data flow)部分。

排程器(scheduler)

排程器從引擎接受request並將他們入隊,以便之後引擎請求他們時提供給引擎。

spiders

spiderscrapy使用者編寫用於分析response並提取item(即獲取到的item)或額外跟進的url的類。 每個spider負責處理乙個特定(或一些)**。

item pipeline

item pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如訪問到資料庫中)。

spider中介軟體(spider middlewares)

spider中介軟體是在引擎及spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了乙個簡便的機制,通過插入自定義**來擴充套件scrapy功能。

引擎開啟乙個**(open a domain),找到處理該**的spider並向該spider請求第乙個要爬取的url(s)。

引擎從spider中獲取到第乙個要爬取的url並在排程器(scheduler)request排程。

引擎向排程器請求下乙個要爬取的url。

spider處理response並返回爬取到的item及(跟進的)新的request給引擎。

引擎將(spider返回的)爬取到的item給item pipeline,將(spider返回的)request給排程器。

下面博主列出兩個學習scrapy的參考資料。

參考:

Python之scrapy框架爬蟲

scrapy命令詳解 可能是如今最全最簡單的scrapy命令解釋 明天上班,又要爬 現在每天做的工作有50 的時間爬 40 的時間清理資料,10 寫報告。若想自學資料分析,側重點很重要,我當初把大部分經歷放在了python的pandas numpymatplotlib上面,其他時間一部分放在sql身...

python爬蟲框架之Scrapy

scrapy 是乙個爬蟲框架,提取結構性的資料。其可以應用在資料探勘,資訊處理等方面。提供了許多的爬蟲的基類,幫我們更簡便使用爬蟲。基於twisted 準備步驟 首先安裝依賴庫twisted 在這個 下面去尋找符合你的python版本和系統版本的twisted pip install 依賴庫的路徑 ...

python爬蟲scrapy之rules的基本使用

link extractors 是那些目的僅僅是從網頁 scrapy.http.response物件 中抽取最終將會被follow鏈結的物件 scrapy預設提供2種可用的 link extractor,但你通過實現乙個簡單的介面建立自己定製的link extractor來滿足需求 每個linkex...