<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                網絡爬蟲,是在網上進行數據抓取的程序,使用它能夠抓取特定網頁的HTML數據。雖然我們利用一些庫開發一個爬蟲程序,但是使用框架可以大大提高效率,縮短開發時間。Scrapy是一個使用Python編寫的,輕量級的,簡單輕巧,并且使用起來非常的方便。 ### 一、概述 下圖顯示了Scrapy的大體架構,其中包含了它的主要組件及系統的數據處理流程(綠色箭頭所示)。下面就來一個個解釋每個組件的作用及數據的處理過程(注:圖片來自互聯網)。 ![scrapy](https://box.kancloud.cn/2016-04-08_570718c75fdec.png) ### 二、組件 1、Scrapy Engine(Scrapy引擎) Scrapy引擎是用來控制整個系統的數據處理流程,并進行事務處理的觸發。更多的詳細內容可以看下面的數據處理流程。 2、Scheduler(調度) 調度程序從Scrapy引擎接受請求并排序列入隊列,并在Scrapy引擎發出請求后返還給他們。 3、Downloader(下載器) 下載器的主要職責是抓取網頁并將網頁內容返還給蜘蛛( Spiders)。 4、Spiders(蜘蛛) 蜘蛛是有Scrapy用戶自己定義用來解析網頁并抓取制定URL返回的內容的類,每個蜘蛛都能處理一個域名或一組域名。換句話說就是用來定義特定網站的抓取和解析規則。 蜘蛛的整個抓取流程(周期)是這樣的: 首先獲取第一個URL的初始請求,當請求返回后調取一個回調函數。第一個請求是通過調用start_requests()方法。該方法默認從start_urls中的Url中生成請求,并執行解析來調用回調函數。 在回調函數中,你可以解析網頁響應并返回項目對象和請求對象或兩者的迭代。這些請求也將包含一個回調,然后被Scrapy下載,然后有指定的回調處理。 在回調函數中,你解析網站的內容,同程使用的是Xpath選擇器(但是你也可以使用BeautifuSoup, lxml或其他任何你喜歡的程序),并生成解析的數據項。 最后,從蜘蛛返回的項目通常會進駐到項目管道。 5、Item Pipeline(項目管道) 項目管道的主要責任是負責處理有蜘蛛從網頁中抽取的項目,他的主要任務是清晰、驗證和存儲數據。當頁面被蜘蛛解析后,將被發送到項目管道,并經過幾個特定的次序處理數據。每個項目管道的組件都是有一個簡單的方法組成的Python類。他們獲取了項目并執行他們的方法,同時他們還需要確定的是是否需要在項目管道中繼續執行下一步或是直接丟棄掉不處理。 項目管道通常執行的過程有: 清洗HTML數據 驗證解析到的數據(檢查項目是否包含必要的字段) 檢查是否是重復數據(如果重復就刪除) 將解析到的數據存儲到數據庫中 6、Downloader middlewares(下載器中間件) 下載中間件是位于Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請求及響應。它提供了一個自定義的代碼的方式來拓展Scrapy的功能。下載中間器是一個處理請求和響應的鉤子框架。他是輕量級的,對Scrapy盡享全局控制的底層的系統。 7、Spider middlewares(蜘蛛中間件) 蜘蛛中間件是介于Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應輸入和請求輸出。它提供一個自定義代碼的方式來拓展Scrapy的功能。蛛中間件是一個掛接到Scrapy的蜘蛛處理機制的框架,你可以插入自定義的代碼來處理發送給蜘蛛的請求和返回蜘蛛獲取的響應內容和項目。 8、Scheduler middlewares(調度中間件) 調度中間件是介于Scrapy引擎和調度之間的中間件,主要工作是處從Scrapy引擎發送到調度的請求和響應。他提供了一個自定義的代碼來拓展Scrapy的功能。 ### 三、數據處理流程 Scrapy的整個數據處理流程有Scrapy引擎進行控制,其主要的運行方式為: 1.引擎打開一個域名,時蜘蛛處理這個域名,并讓蜘蛛獲取第一個爬取的URL。 2.引擎從蜘蛛那獲取第一個需要爬取的URL,然后作為請求在調度中進行調度。 3.引擎從調度那獲取接下來進行爬取的頁面。 4.調度將下一個爬取的URL返回給引擎,引擎將他們通過下載中間件發送到下載器。 5.當網頁被下載器下載完成以后,響應內容通過下載中間件被發送到引擎。 6.引擎收到下載器的響應并將它通過蜘蛛中間件發送到蜘蛛進行處理。 7.蜘蛛處理響應并返回爬取到的項目,然后給引擎發送新的請求。 8.引擎將抓取到的項目項目管道,并向調度發送請求。 9.系統重復第二部后面的操作,直到調度中沒有請求,然后斷開引擎與域之間的聯系。 ### 四、驅動器 Scrapy是由Twisted寫的一個受歡迎的Python事件驅動網絡框架,它使用的是非堵塞的異步處理。如果要獲得更多關于異步編程和Twisted的信息,請參考下面兩條鏈接。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看