国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

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

pkhope / 2354人閱讀

摘要:下載器下載器負責獲取頁面數(shù)據(jù)并提供給引擎,而后提供給。下載器中間件下載器中間件是在引擎及下載器之間的特定鉤子,處理傳遞給引擎的。一旦頁面下載完畢,下載器生成一個該頁面的,并將其通過下載中間件返回方向發(fā)送給引擎。

作者:xiaoyu
微信公眾號:Python數(shù)據(jù)科學
知乎:Python數(shù)據(jù)分析師


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

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

為什么要用爬蟲框架?

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

學習框架的根本是學習一種編程思想,而不應該僅僅局限于是如何使用它。從了解到掌握一種框架,其實是對一種思想理解的過程。

框架也給我們的開發(fā)帶來了極大的方便。許多條條框框都已經(jīng)是寫好了的,并不需要我們重復造輪子,我們只需要根據(jù)自己的需求定制自己要實現(xiàn)的功能就好了,大大減少了工作量。

參考并學習優(yōu)秀的框架代碼,提升編程代碼能力。

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

scrapy框架的介紹

比較流行的爬蟲的框架有scrapypyspider,但是被大家所鐘愛的我想非scrapy莫屬了。scrapy是一個開源的高級爬蟲框架,我們可以稱它為"scrapy語言"。它使用python編寫,用于爬取網(wǎng)頁,提取結(jié)構(gòu)性數(shù)據(jù),并可將抓取得結(jié)構(gòu)性數(shù)據(jù)較好的應用于數(shù)據(jù)分析和數(shù)據(jù)挖掘。scrapy有以下的一些特點:

scrapy基于事件的機制,利用twisted的設計實現(xiàn)了非阻塞的異步操作。這相比于傳統(tǒng)的阻塞式請求,極大的提高了CPU的使用率,以及爬取效率。

配置簡單,可以簡單的通過設置一行代碼實現(xiàn)復雜功能。

可拓展,插件豐富,比如分布式scrapy + redis、爬蟲可視化等插件。

解析方便易用,scrapy封裝了xpath等解析器,提供了更方便更高級的selector構(gòu)造器,可有效的處理破損的HTML代碼和編碼。

scrapy和requests+bs用哪個好?

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

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

但是對于一些中小型的爬蟲任務來講,scrapy確實是非常好的選擇,它避免了我們來寫一些重復的代碼,并且有著出色的性能。我們自己寫代碼的時候,比如為了提高爬取效率,每次都自己碼多線程或異步等代碼,大大浪費了開發(fā)時間。這時候使用已經(jīng)寫好的框架是再好不過的選擇了,我們只要簡單的寫寫解析規(guī)則和pipeline就好了。那么具體哪些是需要我們做的呢?看看下面這個圖就明白了。


參考來源在本文末

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

scrapy的架構(gòu)

在學習Scrapy之前,我們需要了解Scrapy的架構(gòu),明白這個架構(gòu)對學習scrapy至關(guān)重要。


Scrapy官方文檔的圖片

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

組件

Scrapy Engine
引擎負責控制數(shù)據(jù)流在系統(tǒng)中所有組件中流動,并在相應動作發(fā)生時觸發(fā)事件。 詳細內(nèi)容查看下面的數(shù)據(jù)流(Data Flow)部分。

調(diào)度器(Scheduler)
調(diào)度器從引擎接受request并將他們?nèi)腙牐员阒笠嬲埱笏麄儠r提供給引擎。

下載器(Downloader)
下載器負責獲取頁面數(shù)據(jù)并提供給引擎,而后提供給spider

Spiders
SpiderScrapy用戶編寫用于分析response并提取item(即獲取到的item)或額外跟進的URL的類。 每個spider負責處理一個特定(或一些)網(wǎng)站。

Item Pipeline
Item Pipeline負責處理被spider提取出來的item。典型的處理有清理、 驗證及持久化(例如存取到數(shù)據(jù)庫中)。

下載器中間件(Downloader middlewares)
下載器中間件是在引擎及下載器之間的特定鉤子(specific hook),處理Downloader傳遞給引擎的response。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

Spider中間件(Spider middlewares)
Spider中間件是在引擎及Spider之間的特定鉤子(specific hook),處理spider的輸入(response)和輸出(items及requests)。 其提供了一個簡便的機制,通過插入自定義代碼來擴展Scrapy功能。

數(shù)據(jù)流過程

引擎打開一個網(wǎng)站(open a domain),找到處理該網(wǎng)站的Spider并向該spider請求第一個要爬取的URL(s)。

引擎從Spider中獲取到第一個要爬取的URL并在調(diào)度器(Scheduler)Request調(diào)度。

引擎向調(diào)度器請求下一個要爬取的URL。

調(diào)度器返回下一個要爬取的URL給引擎,引擎將URL通過下載中間件(請求(request)方向)轉(zhuǎn)發(fā)給下載器(Downloader)

一旦頁面下載完畢,下載器生成一個該頁面的Response,并將其通過下載中間件(返回(response)方向)發(fā)送給引擎。

引擎從下載器中接收到Response并通過Spider中間件(輸入方向)發(fā)送給Spider處理。

Spider處理Response并返回爬取到的Item及(跟進的)新的Request給引擎。

引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調(diào)度器。

(從第二步)重復直到調(diào)度器中沒有更多地request,引擎關(guān)閉該網(wǎng)站。

scrapy學習參考

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

第一個當然不用說了,scrapy的官方文檔,寫的很好,很詳細。鏈接:https://doc.scrapy.org/en/lat...

第二個是一本關(guān)于scrapy的書籍,《learning scrapy》。可以通過在公眾號發(fā)送 "scrapy"來獲得。

參考:
https://doc.scrapy.org/en/lat...
https://www.cnblogs.com/x-pyu...

關(guān)注微信公眾號Python數(shù)據(jù)科學,獲取 120G 人工智能 學習資料。


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/44625.html

相關(guān)文章

  • 首次公開,整理12年積累的博客收藏夾,零距離展示《收藏夾吃灰》系列博客

    摘要:時間永遠都過得那么快,一晃從年注冊,到現(xiàn)在已經(jīng)過去了年那些被我藏在收藏夾吃灰的文章,已經(jīng)太多了,是時候把他們整理一下了。那是因為收藏夾太亂,橡皮擦給設置私密了,不收拾不好看呀。 ...

    Harriet666 評論0 收藏0
  • Python

    摘要:最近看前端都展開了幾場而我大知乎最熱語言還沒有相關(guān)。有關(guān)書籍的介紹,大部分截取自是官方介紹。但從開始,標準庫為我們提供了模塊,它提供了和兩個類,實現(xiàn)了對和的進一步抽象,對編寫線程池進程池提供了直接的支持。 《流暢的python》閱讀筆記 《流暢的python》是一本適合python進階的書, 里面介紹的基本都是高級的python用法. 對于初學python的人來說, 基礎大概也就夠用了...

    dailybird 評論0 收藏0
  • 基礎如何學爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務,現(xiàn)整理出零基礎如何學爬蟲技術(shù)以供學習,。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務,服務范圍涵蓋社交網(wǎng)絡電子商務分類信息學術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務,現(xiàn)整理出零基礎如何學爬蟲技術(shù)以供學習,http://www.chujiangdata.com。 第一:Python爬蟲學習系列教程(來源于某博主:htt...

    KunMinX 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<