最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲框架Scrapy簡介

 更新時間:2022年06月06日 09:20:35   作者:springsnow  
這篇文章介紹了Python爬蟲框架Scrapy,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

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

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

為什么要用爬蟲框架?

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

  • 學習框架的根本是學習一種編程思想,而不應該僅僅局限于是如何使用它。從了解到掌握一種框架,其實是對一種思想理解的過程。
  • 框架也給我們的開發(fā)帶來了極大的方便。許多條條框框都已經(jīng)是寫好了的,并不需要我們重復造輪子,我們只需要根據(jù)自己的需求定制自己要實現(xiàn)的功能就好了,大大減少了工作量。
  • 參考并學習優(yōu)秀的框架代碼,提升編程代碼能力。

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

scrapy框架的介紹

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

  • scrapy基于事件的機制,利用twisted的設計實現(xiàn)了非阻塞的異步操作。這相比于傳統(tǒng)的阻塞式請求,極大的提高了CPU的使用率,以及爬取效率。
  • 配置簡單,可以簡單的通過設置一行代碼實現(xiàn)復雜功能。
  • 可拓展,插件豐富,比如分布式scrapy + redis、爬蟲可視化等插件。
  • 解析方便易用,scrapy封裝了xpath等解析器,提供了更方便更高級的selector構造器,可有效的處理破損的HTML代碼和編碼。

scrapy和requests+bs用哪個好?

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

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

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

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

scrapy的架構

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

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
Spider是Scrapy用戶編寫用于分析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)方向)轉發(fā)給下載器(Downloader)。
  • 一旦頁面下載完畢,下載器生成一個該頁面的Response,并將其通過下載中間件(返回(response)方向)發(fā)送給引擎。
  • 引擎從下載器中接收到Response并通過Spider中間件(輸入方向)發(fā)送給Spider處理。
  • Spider處理Response并返回爬取到的Item及(跟進的)新的Request給引擎。
  • 引擎將(Spider返回的)爬取到的Item給Item Pipeline,將(Spider返回的)Request給調(diào)度器。
  • (從第二步)重復直到調(diào)度器中沒有更多地request,引擎關閉該網(wǎng)站。

到此這篇關于Python爬蟲框架Scrapy的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • Numpy之random函數(shù)使用學習

    Numpy之random函數(shù)使用學習

    這篇文章主要介紹了Numpy之random使用學習,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • python基于queue和threading實現(xiàn)多線程下載實例

    python基于queue和threading實現(xiàn)多線程下載實例

    這篇文章主要介紹了python基于queue和threading實現(xiàn)多線程下載實例,是比較實用的技巧,需要的朋友可以參考下
    2014-10-10
  • python如何與前端交互舉例詳解

    python如何與前端交互舉例詳解

    在Web開發(fā)中前端與后端之間的數(shù)據(jù)交互,下面這篇文章主要給大家介紹了關于python如何與前端交互的相關資料,文章通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-08-08
  • Python 16進制與中文相互轉換的實現(xiàn)方法

    Python 16進制與中文相互轉換的實現(xiàn)方法

    今天小編就為大家分享一篇Python 16進制與中文相互轉換的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python中使用(.)進行相對路徑訪問文件的操作方法

    python中使用(.)進行相對路徑訪問文件的操作方法

    在Python中,使用相對路徑訪問文件是一種常見的做法,尤其是在處理與腳本位于同一目錄或附近目錄的文件時,這篇文章主要介紹了python中使用(.)來進行相對路徑訪問文件,需要的朋友可以參考下
    2024-05-05
  • 卷積神經(jīng)網(wǎng)絡(CNN)基于SqueezeNet的眼疾識別功能

    卷積神經(jīng)網(wǎng)絡(CNN)基于SqueezeNet的眼疾識別功能

    SqueezeNet是一種輕量且高效的CNN模型,它參數(shù)比AlexNet少50倍,但模型性能(accuracy)與AlexNet接近,這篇文章主要介紹了卷積神經(jīng)網(wǎng)絡(CNN)基于SqueezeNet的眼疾識別,需要的朋友可以參考下
    2023-08-08
  • Django框架驗證碼用法實例分析

    Django框架驗證碼用法實例分析

    這篇文章主要介紹了Django框架驗證碼用法,結合實例形式分析了Python Django框架驗證碼的功能、實現(xiàn)方法及相關操作技巧,需要的朋友可以參考下
    2019-05-05
  • Python?CNN卷積神經(jīng)網(wǎng)絡實戰(zhàn)教程深入講解

    Python?CNN卷積神經(jīng)網(wǎng)絡實戰(zhàn)教程深入講解

    CNN,即卷積神經(jīng)網(wǎng)絡,主要用于圖像識別,分類。由輸入層,卷積層,池化層,全連接層(Affline層),Softmax層疊加而成。卷積神經(jīng)網(wǎng)絡中還有一個非常重要的結構:過濾器,它作用于層與層之間(卷積層與池化層),決定了怎樣對數(shù)據(jù)進行卷積和池化
    2022-12-12
  • Python 自動登錄淘寶并保存登錄信息的方法

    Python 自動登錄淘寶并保存登錄信息的方法

    這篇文章主要介紹了Python 自動登錄淘寶并保存登錄信息的方法,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • Python并行庫joblib之delayed函數(shù)與Parallel函數(shù)詳解

    Python并行庫joblib之delayed函數(shù)與Parallel函數(shù)詳解

    這篇文章主要介紹了Python并行庫joblib之delayed函數(shù)與Parallel函數(shù)詳解,Joblib就是一個可以簡單地將Python代碼轉換為并行計算模式的軟件包,它可非常簡單并行我們的程序,從而提高計算速度,需要的朋友可以參考下
    2023-08-08

最新評論

克什克腾旗| 清苑县| 赞皇县| 莱阳市| 贺州市| 常宁市| 滨州市| 蛟河市| 广宗县| 香格里拉县| 鞍山市| 甘肃省| 西平县| 东港市| 清涧县| 焦作市| 晋中市| 亚东县| 咸阳市| 枞阳县| 伊通| 安多县| 桂东县| 黑河市| 宁强县| 涡阳县| 康马县| 太谷县| 桃江县| 靖州| 乐清市| 松潘县| 沙湾县| 嘉祥县| 玉树县| 玉山县| 郁南县| 班玛县| 房产| 安乡县| 重庆市|