日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第41讲:Scrapy框架的介绍

發布時間:2024/4/11 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第41讲:Scrapy框架的介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在前面編寫爬蟲的時候,如果我們使用 requests、aiohttp 等庫,需要從頭至尾把爬蟲完整地實現一遍,比如說異常處理、爬取調度等,如果寫的多了,的確會比較麻煩。

那么有沒有什么辦法可以提升我們編寫爬蟲的效率呢?當然是有的,那就是利用現有的爬蟲框架。

說到 Python 的爬蟲框架,Scrapy 當之無愧是最流行最強大的框架了。本節我們就來初步認識一下 Scrapy,后面的課時我們會對 Scrapy 的功能模塊進行詳細介紹。

Scrapy 介紹

Scrapy 是一個基于 Twisted 的異步處理框架,是純 Python 實現的爬蟲框架,其架構清晰,模塊之間的耦合程度低,可擴展性極強,可以靈活完成各種需求。我們只需要定制開發幾個模塊就可以輕松實現一個爬蟲。

首先我們來看下 Scrapy 框架的架構,如圖所示:

它可以分為如下的幾個部分。

  • Engine(引擎):用來處理整個系統的數據流處理、觸發事務,是整個框架的核心。
  • Item(項目):定義了爬取結果的數據結構,爬取的數據會被賦值成該對象。
  • Scheduler(調度器):用來接受引擎發過來的請求并加入隊列中,并在引擎再次請求的時候提供給引擎。
  • Downloader(下載器):用于下載網頁內容,并將網頁內容返回給蜘蛛。
  • Spiders(蜘蛛):其內定義了爬取的邏輯和網頁的解析規則,它主要負責解析響應并生成提取結果和新的請求。
  • Item Pipeline(項目管道):負責處理由蜘蛛從網頁中抽取的項目,它的主要任務是清洗、驗證和存儲數據。
  • Downloader Middlewares(下載器中間件):位于引擎和下載器之間的鉤子框架,主要是處理引擎與下載器之間的請求及響應。
  • Spider Middlewares(蜘蛛中間件):位于引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛輸入的響應和輸出的結果及新的請求。

初看起來的確比較懵,不過不用擔心,我們在后文會結合案例來對 Scrapy 的功能模塊進行介紹,相信你會慢慢地理解各個模塊的含義及功能。

數據流

了解了架構,下一步就是要了解它是怎樣進行數據爬取和處理的,所以我們接下來需要了解 Scrapy 的數據流機制。

Scrapy 中的數據流由引擎控制,其過程如下:

  • Engine 首先打開一個網站,找到處理該網站的 Spider 并向該 Spider 請求第一個要爬取的 URL。
  • Engine 從 Spider 中獲取到第一個要爬取的 URL 并通過 Scheduler 以 Request 的形式調度。
  • Engine 向 Scheduler 請求下一個要爬取的 URL。
  • Scheduler 返回下一個要爬取的 URL 給 Engine,Engine 將 URL 通過 Downloader Middlewares 轉發給 Downloader 下載。
  • 一旦頁面下載完畢, Downloader 生成一個該頁面的 Response,并將其通過 Downloader Middlewares 發送給 Engine。
  • Engine 從下載器中接收到 Response 并通過 Spider Middlewares 發送給 Spider 處理。
  • Spider 處理 Response 并返回爬取到的 Item 及新的 Request 給 Engine。
  • Engine 將 Spider 返回的 Item 給 Item Pipeline,將新的 Request 給 Scheduler。
  • 重復第二步到最后一步,直到 Scheduler 中沒有更多的 Request,Engine 關閉該網站,爬取結束。

通過多個組件的相互協作、不同組件完成工作的不同、組件對異步處理的支持,Scrapy 最大限度地利用了網絡帶寬,大大提高了數據爬取和處理的效率。

安裝

了解了 Scrapy 的基本情況之后,下一步讓我們來動手安裝一下吧。

Scrapy 的安裝方法當然首推官方文檔,其地址為:https://docs.scrapy.org/en/latest/intro/install.html,另外也可以參考 https://cuiqingcai.com/5421.html。

安裝完成之后,如果可以正常使用 scrapy 命令,那就是可以了。

項目結構

既然 Scrapy 是框架,那么 Scrapy 一定幫我們預先配置好了很多可用的組件和編寫爬蟲時所用的腳手架,也就是預生成一個項目框架,我們可以基于這個框架來快速編寫爬蟲。

Scrapy 框架是通過命令行來創建項目的,創建項目的命令如下:

scrapy startproject demo

執行完成之后,在當前運行目錄下便會出現一個文件夾,叫作 demo,這就是一個 Scrapy 項目框架,我們可以基于這個項目框架來編寫爬蟲。

項目文件結構如下所示:

scrapy.cfg project/__init__.pyitems.pypipelines.pysettings.pymiddlewares.pyspiders/__init__.pyspider1.pyspider2.py...

在此要將各個文件的功能描述如下:

  • scrapy.cfg:它是 Scrapy 項目的配置文件,其內定義了項目的配置文件路徑、部署相關信息等內容。
  • items.py:它定義 Item 數據結構,所有的 Item 的定義都可以放這里。
  • pipelines.py:它定義 Item Pipeline 的實現,所有的 Item Pipeline 的實現都可以放這里。
  • settings.py:它定義項目的全局配置。
  • middlewares.py:它定義 Spider Middlewares 和 Downloader Middlewares 的實現。
  • spiders:其內包含一個個 Spider 的實現,每個 Spider 都有一個文件。

好了,到現在為止我們就大體知道了 Scrapy 的基本架構并實操創建了一個 Scrapy 項目,后面我們會詳細了解 Scrapy 的用法,感受它的強大,下節課見。

總結

以上是生活随笔為你收集整理的第41讲:Scrapy框架的介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。