1. <rp id="c4hsd"></rp>
          1. <button id="c4hsd"><acronym id="c4hsd"><input id="c4hsd"></input></acronym></button>
          2. <tbody id="c4hsd"></tbody>

            <dd id="c4hsd"><pre id="c4hsd"></pre></dd>

              1. <th id="c4hsd"></th>
              2. <s id="c4hsd"><object id="c4hsd"></object></s>

                    [ 登錄 ] - [ 注冊 ] | 代碼示例DEMO | IP測試視頻 |

                    爬蟲原理概述以及常用的爬蟲框架介紹

                    作者:數據無憂   時間:2020-09-18 13:24:53

                    數據爬蟲概述

                    爬蟲,即網絡爬蟲(Web crawler),是一種自動獲取網頁內容的程序。

                    是搜索引擎的重要組成部分,因此搜索引擎優化很大程度上就是針對爬蟲而做出的優化。 

                    搜索引擎的處理對象是互聯網網頁,日前網頁數量以百億計,所以搜索引擎首先面臨的問題就是:如何能夠設計出高效的下載系統,以將如此海量的網頁數據傳送到本地,在本地形成互聯網網頁的鏡像備份。

                    網絡爬蟲即起此作用,它是搜索引擎系統中很關鍵也很基礎的構件。

                    這里主要介紹與網絡爬蟲相關的技術,盡管爬蟲技術經過幾十年的發展,從整體框架上已相對成熟,現階段已經有各種語言開發的成熟的爬蟲項目,比如Python的Scrapy,C++的larbin,Java的Nutch等

                    但隨著互聯網的不斷發展,也面臨著一些有挑戰性的新問題。

                    比如頁面采用JS動態加載,IP被封禁等問題,本節課也會給出對應的解決方案。

                    數據爬蟲實現原理

                    下圖所示是一個通用的爬蟲框架流程。

                    首先從互聯網頁面中精心選擇一部分網頁,以這些網頁的鏈接地址作為種子URL,

                    將這些種子URL放入待抓取URL隊列中,爬蟲從待抓取URL隊列依次讀取,解析新的URL,確認這個URL沒有抓取過之后,再次放入帶抓取隊列,

                    同時還會解析網頁的內容,獲取程序需要的部分,進行最終的處理(存入數據庫、建索引等)。

                    上述是一個通用爬蟲的整體流程,如果從更加宏觀的角度考慮,處于動態抓取過程中的爬蟲和互聯網所有網頁之間的關系,可以將互聯網頁面劃分為5個部分:

                    1.已下載網頁集合:爬蟲已經從互聯網下載到本地進行索引的網頁集合。

                    2.已過期網頁集合:由于網頁數最巨大,爬蟲完整抓取一輪需要較長時間,在抓取過程中,很多已經下載的網頁可能過期。之所以如此,是因為互聯網網頁處于不斷的動態變化過程中,所以易產生本地網頁內容和真實互聯網網頁不一致的情況。

                    3.待下載網頁集合:即處于上圖中待抓取URL隊列中的網頁,這些網頁即將被爬蟲下載。

                    4.可知網頁集合:這些網頁還沒有被爬蟲下載,也沒有出現在待抓取URL隊列中,不過通過已經抓取的網頁或者在待抓取URL隊列中的網頁,總足能夠通過鏈接關系發現它們,稍晚時候會被爬蟲抓取并索引。

                    5.不可知網頁集合:有些網頁對于爬蟲來說是無法抓取到的,這部分網頁構成了不可知網頁集合。事實上,這部分網頁所占的比例很高。

                    根據不同的應用,爬蟲系統在許多方面存在差異,大體而言,可以將爬蟲劃分為如下三種類型:

                    1. 批量型爬蟲(Batch Crawler):批量型爬蟲有比較明確的抓取范圍和目標,當爬蟲達到這個設定的目標后,即停止抓取過程。至于具體目標可能各異,也許是設定抓取一定數量的網頁即可,也許是設定抓取消耗的時間等。

                    2.增量型爬蟲(Incremental Crawler):增量型爬蟲與批量型爬蟲不同,會保持持續不斷的抓取,對于抓取到的網頁,要定期更新,因為互聯網的網頁處于不斷變化中,新增網頁、網頁被刪除或者網頁內容更改都很常見,而增量型爬蟲需要及時反映這種變化,所以處于持續不斷的抓取過程中,不是在抓取新網頁,就是在更新已有網頁。通用的商業搜索引擎爬蟲基本都屬此類。

                    3.垂直型爬蟲(Focused Crawter):垂直型爬蟲關注特定主題內容或者屬于特定行業的網頁,比如對于健康網站來說,只需要從互聯網頁而里找到與健康相關的頁面內容即可,其他行業的內容不在考慮范圍。垂直型爬蟲一個最大的特點和難點就是:如何識別網頁內容是否屬于指定行業或者主題。從節省系統資源的角度來說,不太可能把所有互聯網頁面下載下來之后再去篩選,這樣浪費資源就太過分了,往往需要爬蟲在抓取階段就能夠動態識別某個網址是否與主題相關,并盡量不去抓墩無關頁面,以達到節省資源的目的。垂直搜索網站或者垂直行業網站往往需要此種類型的爬蟲。

                    常見的數據爬蟲 

                    webmagic

                    webmagic是一個無須配置、便于二次開發的爬蟲框架,它提供簡單靈活的API,只需少量代碼即可實現一個爬蟲。

                    webmagic采用完全模塊化的設計,功能覆蓋整個爬蟲的生命周期(鏈接提取、頁面下載、內容抽取、持久化),支持多線程抓取,分布式抓取,并支持自動重試、自定義UA/cookie等功能。

                    webmagic包含強大的頁面抽取功能,開發者可以便捷的使用css selector、xpath和正則表達式進行鏈接和內容的提取,支持多個選擇器鏈式調用。

                    Heritrix

                    Heritrix 是一個由 java 開發的、開源的網絡爬蟲,用戶可以使用它來從網上抓取想要的資源。其最出色之處在于它良好的可擴展性,方便用戶實現自己的抓取邏輯。

                    Heritrix采用的是模塊化的設計,各個模塊由一個控制器類(CrawlController類)來協調,控制器是整體的核心。

                    Scrapy

                    Scrapy 是純python實現的爬蟲框架,用戶只需要定制開發幾個模塊就可以輕松的實現一個爬蟲,用來抓取網頁內容以及各種圖片,非常之方便~

                    Soukey

                    Soukey采摘網站數據采集軟件是一款基于.Net平臺的開源軟件,也是網站數據采集軟件類型中唯一一款開源軟件。盡管Soukey采摘開源,但并不會影響軟件功能的提供,甚至要比一些商用軟件的功能還要豐富。多任務多線程數據采集,支持POST方式;可采集Ajax頁面;支持Cookie,支持手工登錄采集數據;等

                    下一課時我們要用Java語言實現一套自己的爬蟲。

                    用Java實現數據爬蟲


                    按照整體邏輯圖,我們需要先確定一個要抓去的網址,分析網址源碼,從這個網址中解析所有待抓取URL

                    同時從源碼中解析目標內容,進行處理。

                    重復上述步驟即可。

                    1. 需要定義一個Set類用于存儲待抓取URL

                    2. 定一個Set類,存儲已經處理過的URL

                    HttpUrlConnection抓數據

                    無憂代理IP--專業的代理IP提供商

                    Jsoup抓數據

                    Jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

                    無憂代理IP-專業的代理IP提供商

                    HtmlUnit - WebClient抓數據
                    無憂代理IP-專業的代理IP提供商


                    IP被封禁的解決方案

                    頻繁抓取一個網站,最常見的問題就是IP被封,返回的Http狀態碼是403 Forbidden

                    這種情況下就需要更換IP,使用高匿名代理IP

                    那么IP從哪里獲取呢   http://www.aooseo.com/




                    無憂代理IP(www.aooseo.com)原創文章,轉載請注明出處。

                    電話:4007-745-096
                    QQ:
                    周一至周日8:30-18:00 技術部電話熱線
                    久久夜色精品国产噜噜亚洲AV_老妇女性较大毛片_888亚洲欧美国产va在线播放_超碰人人透人人爽人人看