久久精品国产亚洲高清|精品日韩中文乱码在线|亚洲va中文字幕无码久|伊人久久综合狼伊人久久|亚洲不卡av不卡一区二区|精品久久久久久久蜜臀AV|国产精品19久久久久久不卡|国产男女猛烈视频在线观看麻豆

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > 20天學會爬蟲之Scrapy框架介紹

20天學會爬蟲之Scrapy框架介紹

來源:千鋒教育
發(fā)布人:qyf
時間: 2022-09-19 17:49:00 1663580940

  什么是Scrapy

  Scrapy是一個為了爬取網(wǎng)站數(shù)據(jù),提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應用框架。

  框架就是將平常寫爬蟲的request (異步調(diào)度和處理)、下載器(多線程的 Downloader)、解析器(selector)和 twisted(異步處理)封裝到了一起,夠成了框架。而且使用起來更加方便,爬取速度更快。

  Scrapy框架的應用領(lǐng)域有很多,例如網(wǎng)絡爬蟲開發(fā)、數(shù)據(jù)挖掘、自動化測試等,其最初是為了頁面抓取(網(wǎng)絡抓取)所設(shè)計的,也可以應用在獲取API所返回的數(shù)據(jù)或者通用的網(wǎng)絡爬蟲。官方網(wǎng)址是https://scrapy.org/

Picture

  Scrapy的安裝

  Windows系統(tǒng):

  pip install scrapy

  如果安裝過程中出錯

  錯誤信息如下:

Picture(1)

  則需要安裝Microsoft Visual C++14,如果報錯不是Microsoft Visual C++14比如Microsoft Visual C++15則對應安裝即可。

  如果安裝過程中過提示安裝Twisted安裝失敗,則需要來到這個網(wǎng)址:https://www.lfd.uci.edu/~gohlke/pythonlibs/自行下載wheel文件,

Picture(2)

  可能需要下載的是:pyOpenSSL、Twisted、PyWin32,可以根據(jù)安裝時,報錯的提示信息有針對性的下載。

  下載之后放到一個固定的目錄中,進入下載的目錄。執(zhí)行 pip3 install xxxxxx.whl (注意xxxxxx代表的是你下載的wheel的名字)

  然后再次執(zhí)行:pip install scrapy

  Linux和mac系統(tǒng)直接:pip3 install scrapy

  scrapy工作流程

Picture(3)

  Scrapy工作流程的圖:

Picture(4)

  在圖中,Scrapy引擎是架構(gòu)的核心部分,調(diào)度器、管道、下載器和Spiders等組件都通過引擎來調(diào)控。在Scrapy引擎和下載器中間通過中間件傳遞信息,在下載中間件中,可以插入自定義代碼擴展Scrapy的功能,例如實現(xiàn)IP池的應用。引擎和Spiders之間也是通過爬蟲中間件來傳遞信息,同樣可以自定義擴展功能。

  其中:

  Scrapy引擎負責控制整個數(shù)據(jù)處理流程,處于整個Scrapy框架中心位置,協(xié)調(diào)調(diào)度器、管道、中間件、下載器、爬蟲。

  調(diào)度器負責存儲等待爬取的網(wǎng)址,確定網(wǎng)址優(yōu)先級,相當于一個隊列存儲,同時也會過濾一些重復的網(wǎng)址。

  下載器實現(xiàn)對等待爬取的網(wǎng)頁資源進行高速下載,該組件通過網(wǎng)絡進行大量數(shù)據(jù)傳輸,下載對應的網(wǎng)頁資源后將數(shù)據(jù)傳遞給Scrapy引擎,再由引擎?zhèn)鬟f給爬蟲處理。

  下載中間件用于處理下載器與Scrapy引擎之間的通信,自定義代碼可以輕松擴展Scrapy框架的功能

  Spiders是實現(xiàn)Scrapy框架爬蟲的核心部分。每個爬蟲負責一個或多個指定的網(wǎng)站。爬蟲組件負責接收Scrapy引擎中的Response響應,接收到響應后分析處理,提取對應重要信息

  爬蟲中間件是處理爬蟲組件和Scrapy引擎之間通信的組件,可以自定義代碼擴展Scrapy功能

  管道用于接收從爬蟲組件中提取的管道,接收到后進行清洗、驗證、存儲等系列操作

  因此其流程可以描述如下:

  爬蟲中起始的url構(gòu)造成request對象-->爬蟲中間件-->引擎-->調(diào)度器

  調(diào)度器把request-->引擎-->下載中間件--->下載器

  下載器發(fā)送請求,獲取response響應---->下載中間件---->引擎--->爬蟲中間件--->爬蟲

  爬蟲提取url地址,組裝成request對象---->爬蟲中間件--->引擎--->調(diào)度器,重復步驟2

  爬蟲提取數(shù)據(jù)--->引擎--->管道處理和保存數(shù)據(jù)

  每部分的具體作用

Picture(5)

  scrapy常用命令

  scrapy后面可以跟不同的命令,可以使用scrapy --help進行查看,Scrapy框架中命令分為全局命令和項目命令,全局命令不需要進入Scrapy項目即可在全局中直接運行,項目命令必須在Scrapy項目中才可以運行。

Picture(6)

  其中:

  全局命令:

  fetch命令是用來檢查spider下載頁面的方式

  runspider命令通過Scrapy中的runspider命令可以直接運行一個爬蟲文件

  settings命令是用來獲取Scrapy的配置信息。

  shell命令可以啟動Scrapy的交互終端

  version命令用于查看Scrapy的版本信息

  項目命令:

  Scarpy的項目命令主要有bench、check、crawl、edit、genspider、list、parse。Scrapy全局命令可以在項目內(nèi)外使用,而項目命令只能在Scrapy爬蟲項目中使用。

  bench命令可以測試本地硬件的性能。

  genspider命令可以創(chuàng)建Scrapy爬蟲文件,這是一種快速創(chuàng)建爬蟲文件的方法

  check命令可以實現(xiàn)對爬蟲文件的測試

  crawl命令可以啟動某個爬蟲

  list命令可以列出當前可使用的爬蟲文件

  parse命令可以獲取指定的URL網(wǎng)址,并使用對應的爬蟲文件分析處理

  scrapy開發(fā)步驟

  創(chuàng)建項目:

  scrapy startproject 爬蟲項目名字

  生成一個爬蟲:

  scrapy genspider <爬蟲名字> <允許爬取的域名>

  提取數(shù)據(jù):

  根據(jù)網(wǎng)站結(jié)構(gòu)在spider中實現(xiàn)數(shù)據(jù)采集相關(guān)內(nèi)容

  保存數(shù)據(jù):

  使用pipeline進行數(shù)據(jù)后續(xù)處理和保存

  創(chuàng)建項目

  使用Scrapy創(chuàng)建一個爬蟲項目,首先需要進入存儲爬蟲項目的文件夾,例如在“D:\python_spider”目錄中創(chuàng)建爬蟲項目,如圖所示。

Picture(7)

  當然如果你是Linux或者mac系統(tǒng)也需要進入存儲爬蟲項目的文件夾,然后新建項目

Picture(8)

  創(chuàng)建之后的爬蟲項目myproject目錄結(jié)構(gòu)如下:

  項目名字/

  scrapy.cfg:

  項目名字/

  __init__.py

  items.py

  pipelines.py

  settings.py

  spiders/

  __init__.py

  scrapy.cfg 項目的主配置信息。(真正爬蟲相關(guān)的配置信息在settings.py文件中)

  items.py 設(shè)置數(shù)據(jù)存儲模板,用于結(jié)構(gòu)化數(shù)據(jù),如:Django的Model

  pipelines 數(shù)據(jù)持久化處理

  settings.py 配置文件,如:遞歸的層數(shù)、并發(fā)數(shù),延遲下載等

  spiders 爬蟲目錄,如:創(chuàng)建文件,編寫爬蟲解析規(guī)則

  生成一個爬蟲spider

  進入剛才創(chuàng)建的爬蟲項目myproject目錄

Picture(9)

  然后執(zhí)行: scrapy genspider 應用名稱 爬取網(wǎng)頁的起始url (見下圖的3部分)

Picture(10)

  編寫爬蟲

  在生成一個爬蟲執(zhí)行完畢后,會在項目的spiders中生成一個應用名的py爬蟲文件

Picture(11)

  打開文件進行代碼編寫,大家看到的是默認的格式,可以在parse方法中完善爬蟲代碼

Picture(12)

  保存數(shù)據(jù)

  數(shù)據(jù)的保存需要使用管道pipline,在pipelines.py文件中定義對數(shù)據(jù)的操作

  定義一個管道類

  重寫管道類的process_item方法

  process_item方法處理完item之后必須返回給引擎

Picture(13)

  然后在settings.py配置啟用管道

  ITEM_PIPELINES = {

  'myproject.pipelines.MyprojectPipeline': 400,

  }

  配置項中鍵為使用的管道類,管道類使用.進行分割,第一個為項目目錄,第二個為文件,第三個為定義的管道類。

  配置項中值為管道的使用順序,設(shè)置的數(shù)值約小越優(yōu)先執(zhí)行,該值一般設(shè)置為1000以內(nèi)。

  運行scrapy

  命令:在項目目錄下執(zhí)行scrapy crawl <爬蟲名字>

  示例:scrapy crawl qiubai

Picture(14)

  當然本次只是給大家描述了一下爬蟲中使用scrapy的基本步驟,20天學會爬蟲后面會接連介紹scrapy的使用,敬請期待哦!

tags:
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
快速通道