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

    1. <style id="76ofp"></style>

      <style id="76ofp"></style>
      <rt id="76ofp"></rt>
      <form id="76ofp"><optgroup id="76ofp"></optgroup></form>
      1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

        手機(jī)站
        千鋒教育

        千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

        千鋒教育

        掃一掃進(jìn)入千鋒手機(jī)站

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

        關(guān)注千鋒學(xué)習(xí)站小程序
        隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

        當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > 20天學(xué)會(huì)爬蟲(chóng)之Scrapy框架介紹

        20天學(xué)會(huì)爬蟲(chóng)之Scrapy框架介紹

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

          什么是Scrapy

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

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

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

        Picture

          Scrapy的安裝

          Windows系統(tǒng):

          pip install scrapy

          如果安裝過(guò)程中出錯(cuò)

          錯(cuò)誤信息如下:

        Picture(1)

          則需要安裝Microsoft Visual C++14,如果報(bào)錯(cuò)不是Microsoft Visual C++14比如Microsoft Visual C++15則對(duì)應(yīng)安裝即可。

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

        Picture(2)

          可能需要下載的是:pyOpenSSL、Twisted、PyWin32,可以根據(jù)安裝時(shí),報(bào)錯(cuò)的提示信息有針對(duì)性的下載。

          下載之后放到一個(gè)固定的目錄中,進(jìn)入下載的目錄。執(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等組件都通過(guò)引擎來(lái)調(diào)控。在Scrapy引擎和下載器中間通過(guò)中間件傳遞信息,在下載中間件中,可以插入自定義代碼擴(kuò)展Scrapy的功能,例如實(shí)現(xiàn)IP池的應(yīng)用。引擎和Spiders之間也是通過(guò)爬蟲(chóng)中間件來(lái)傳遞信息,同樣可以自定義擴(kuò)展功能。

          其中:

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

          調(diào)度器負(fù)責(zé)存儲(chǔ)等待爬取的網(wǎng)址,確定網(wǎng)址優(yōu)先級(jí),相當(dāng)于一個(gè)隊(duì)列存儲(chǔ),同時(shí)也會(huì)過(guò)濾一些重復(fù)的網(wǎng)址。

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

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

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

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

          管道用于接收從爬蟲(chóng)組件中提取的管道,接收到后進(jìn)行清洗、驗(yàn)證、存儲(chǔ)等系列操作

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

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

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

          下載器發(fā)送請(qǐng)求,獲取response響應(yīng)---->下載中間件---->引擎--->爬蟲(chóng)中間件--->爬蟲(chóng)

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

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

          每部分的具體作用

        Picture(5)

          scrapy常用命令

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

        Picture(6)

          其中:

          全局命令:

          fetch命令是用來(lái)檢查spider下載頁(yè)面的方式

          runspider命令通過(guò)Scrapy中的runspider命令可以直接運(yùn)行一個(gè)爬蟲(chóng)文件

          settings命令是用來(lái)獲取Scrapy的配置信息。

          shell命令可以啟動(dòng)Scrapy的交互終端

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

          項(xiàng)目命令:

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

          bench命令可以測(cè)試本地硬件的性能。

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

          check命令可以實(shí)現(xiàn)對(duì)爬蟲(chóng)文件的測(cè)試

          crawl命令可以啟動(dòng)某個(gè)爬蟲(chóng)

          list命令可以列出當(dāng)前可使用的爬蟲(chóng)文件

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

          scrapy開(kāi)發(fā)步驟

          創(chuàng)建項(xiàng)目:

          scrapy startproject 爬蟲(chóng)項(xiàng)目名字

          生成一個(gè)爬蟲(chóng):

          scrapy genspider <爬蟲(chóng)名字> <允許爬取的域名>

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

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

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

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

          創(chuàng)建項(xiàng)目

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

        Picture(7)

          當(dāng)然如果你是Linux或者mac系統(tǒng)也需要進(jìn)入存儲(chǔ)爬蟲(chóng)項(xiàng)目的文件夾,然后新建項(xiàng)目

        Picture(8)

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

          項(xiàng)目名字/

          scrapy.cfg:

          項(xiàng)目名字/

          __init__.py

          items.py

          pipelines.py

          settings.py

          spiders/

          __init__.py

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

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

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

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

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

          生成一個(gè)爬蟲(chóng)spider

          進(jìn)入剛才創(chuàng)建的爬蟲(chóng)項(xiàng)目myproject目錄

        Picture(9)

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

        Picture(10)

          編寫(xiě)爬蟲(chóng)

          在生成一個(gè)爬蟲(chóng)執(zhí)行完畢后,會(huì)在項(xiàng)目的spiders中生成一個(gè)應(yīng)用名的py爬蟲(chóng)文件

        Picture(11)

          打開(kāi)文件進(jìn)行代碼編寫(xiě),大家看到的是默認(rèn)的格式,可以在parse方法中完善爬蟲(chóng)代碼

        Picture(12)

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

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

          定義一個(gè)管道類(lèi)

          重寫(xiě)管道類(lèi)的process_item方法

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

        Picture(13)

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

          ITEM_PIPELINES = {

          'myproject.pipelines.MyprojectPipeline': 400,

          }

          配置項(xiàng)中鍵為使用的管道類(lèi),管道類(lèi)使用.進(jìn)行分割,第一個(gè)為項(xiàng)目目錄,第二個(gè)為文件,第三個(gè)為定義的管道類(lèi)。

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

          運(yùn)行scrapy

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

          示例:scrapy crawl qiubai

        Picture(14)

          當(dāng)然本次只是給大家描述了一下爬蟲(chóng)中使用scrapy的基本步驟,20天學(xué)會(huì)爬蟲(chóng)后面會(huì)接連介紹scrapy的使用,敬請(qǐng)期待哦!

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

        1.定位不同Visual Studio Online,現(xiàn)更名為Visual Studio Codespaces,是微軟提供的一款在線(xiàn)開(kāi)發(fā)環(huán)境,允許開(kāi)發(fā)者在云端進(jìn)行編程和調(diào)試工作。而...詳情>>

        2023-10-15 00:21:42
        什么是域控制器?

        一、域控制器的定義域控制器是指在Windows Server操作系統(tǒng)中部署Active Directory服務(wù)的服務(wù)器。Active Directory是微軟公司開(kāi)發(fā)的目錄服務(wù),用...詳情>>

        2023-10-15 00:10:28
        深度學(xué)習(xí)模型權(quán)重h5、weights、ckpt、pth有什么區(qū)別?

        1.來(lái)源框架不同h5格式通常用于Keras和TensorFlow框架,weights用于Darknet框架,ckpt是TensorFlow框架的一種格式,而pth則主要用于PyTorch框架...詳情>>

        2023-10-15 00:05:17
        大數(shù)據(jù)測(cè)試工程師需要具備哪些技能?

        一、理解大數(shù)據(jù)概念大數(shù)據(jù)測(cè)試工程師需要理解大數(shù)據(jù)的基本概念和原理,如分布式存儲(chǔ)、MapReduce、實(shí)時(shí)計(jì)算等。他們還需要了解如何處理大規(guī)模的...詳情>>

        2023-10-14 23:43:03
        為什么SpringBoot的 jar 可以直接運(yùn)行?

        一、JAR文件的結(jié)構(gòu)與執(zhí)行方式Spring Boot的JAR包是Java Archive的縮寫(xiě),它是一種壓縮文件格式,可以將Java項(xiàng)目的類(lèi)文件、資源文件以及依賴(lài)庫(kù)等...詳情>>

        2023-10-14 23:01:49
        快速通道
        礼泉县| 巴林左旗| 诸暨市| 洞头县| 通辽市| 体育| 准格尔旗| 广西| 咸丰县| 麟游县| 屯门区| 大姚县| 吴江市| 应用必备| 文昌市| 合川市| 景泰县| 富源县| 增城市| 凭祥市| 炎陵县| 恩平市| 清原| 宝应县| 威远县| 巧家县| 繁昌县| 同仁县| 沙田区| 铁岭县| 榕江县| 丹阳市| 龙井市| 如东县| 淳安县| 新宾| 格尔木市| 武汉市| 禄丰县| 大同市| 南溪县|