在爬蟲的路上,學習scrapy
是乙個必不可少的環節。也許有好多朋友此時此刻也正在接觸並學習scrapy
,那麼很好,我們一起學習。開始接觸scrapy
的朋友可能會有些疑惑,畢竟是乙個框架,上來不知從何學起。從本篇起,博主將開啟scrapy
學習的系列,分享如何快速入門scrapy並熟練使用它。
本篇作為第一篇,主要介紹和了解scrapy
,在結尾會向大家推薦一本關於學習scrapy
的書,以及獲取的方式。
如果你對爬蟲的基礎知識有了一定了解的話,那麼是時候該了解一下爬蟲框架了。那麼為什麼要使用爬蟲框架?
博主當時是根據這幾點來進行爬蟲框架的學習的,但是切記核心目標是掌握一種框架思想,一種框架的能力,掌握了這種思想你才能更好的去使用它,甚至擴充套件它。
比較流行的爬蟲的框架有scrapy
和pyspider
,但是被大家所鍾愛的我想非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
spider
是scrapy
使用者編寫用於分析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給排程器。
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...