第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

網(wǎng)絡爬蟲的基本概念和認知

圖片描述

圖片來源于網(wǎng)絡

1. 爬蟲的定義

網(wǎng)絡爬蟲(又稱為網(wǎng)頁蜘蛛,網(wǎng)絡機器人,在 FOAF 社區(qū)中間,更經(jīng)常的稱為網(wǎng)頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲?!?百度百科定義 詳細定義參照

慕課網(wǎng)注解: 爬蟲其實是一種自動化信息采集程序或腳本,可以方便的幫助大家獲得自己想要的特定信息。比如說,像百度,谷歌等搜索引擎,他們的背后重要的技術支撐就是爬蟲。當我們使用搜索引擎搜索某一信息的時候,展現(xiàn)在我們眼前的搜索結果,就是爬蟲程序事先從萬維網(wǎng)里爬取下來的。我們之所以稱之為爬蟲,只不過是對自動獲取萬維網(wǎng)的動作的形象比喻而已。

2. 爬蟲的流程架構

爬蟲大致的工作流程如下圖所示:首先獲取數(shù)據(jù),然后對數(shù)據(jù)進行清洗和處理,最后對數(shù)據(jù)進行持久化存儲,以及后面的數(shù)據(jù)可視化工作。后面的章節(jié)中,我們會按照這個流程,詳細的一一介紹。
圖片描述

爬蟲流程架構圖

3. 爬蟲的分類

爬蟲按照系統(tǒng)結構和實現(xiàn)技術,大致可以分為以下幾種類型:

3.1 通用網(wǎng)絡爬蟲(General Purpose Web Crawler)

通用爬蟲,主要是指谷歌,百度等搜索引擎。它們爬取的范圍廣,種類多,存儲的信息量大,對技術的要求比較高。

3.2 聚焦網(wǎng)絡爬蟲(Focused Web Crawler)

聚焦爬蟲,主要是根據(jù)特定的主題進行爬取。這是大家最長使用的爬蟲種類。比如,我們爬取金融類的,或者電影,圖書之類的特定信息。由于我們限定了主題和網(wǎng)站,可以極大的節(jié)省我們的硬盤和網(wǎng)絡資源,更好的滿足特定業(yè)務的需求。

3.3 增量式網(wǎng)絡爬蟲(Incremental Web Crawle)

增量爬蟲,主要是指我們在周期性的爬取一些網(wǎng)站的時候,只是僅僅爬取網(wǎng)站變更的內(nèi)容,而不是把所有網(wǎng)站數(shù)據(jù)重新爬取一遍。這樣,可以有效的降低運維成本。

3.4 深層網(wǎng)絡爬蟲(Deep Web Crawler)

深層網(wǎng)絡爬蟲,主要是指我們不能直接爬取的一些網(wǎng)站。比如,這些網(wǎng)站需要用戶登陸,或者填寫一些特定的表單,才能繼續(xù)深入爬取信息。

Tips : 其實在實際的項目中,我們通常會將兩種甚至多種爬蟲技術相結合來使用,以達到更好的效果。

4. 爬蟲的抓取策略

爬蟲根據(jù)業(yè)務需求的不同可以大致分為兩種不同的抓取策略:

4.1 深度優(yōu)先策略

深度優(yōu)先策略是指爬蟲在爬取一個 HTML 頁面的時候,如果發(fā)現(xiàn)頁面中有新的 URL,將對這個新的 URL 進行深度優(yōu)先搜索,以此類推,一直沿著 URL 進行爬取,直到不能深入為止。然后,返回到上一次的 URL 地址,尋找其他 URL 進行搜索,當頁面中沒有新的 URL 可以供選擇的時候,說明搜索已經(jīng)結束。

舉一個簡單的例子,比如,我們訪問慕課網(wǎng),假設慕課網(wǎng)首頁只有兩個課程鏈接,一個是爬蟲課,另一個是 Python 課,深度優(yōu)先算法就是先進入到爬蟲課中,然后再進入到爬蟲課的一個章節(jié)鏈接中,如果這個章節(jié)里沒有了子章節(jié),爬蟲就會退到上一層,從另一個沒有訪問過的章節(jié)繼續(xù)訪問,所有章節(jié)都訪問完了,爬蟲會退回到首頁,對 Python 課鏈接也執(zhí)行相應的搜索,直到無法找到新的 URL 進行搜索而結束。

4.2 廣度優(yōu)先策略

廣度優(yōu)先策略是指爬蟲需要爬取完整個 web 頁面的所有 URL 后,才能繼續(xù)到下一個的頁面進行搜索,直到底層為止。

還是上面我們的慕課網(wǎng)的例子,來到慕課網(wǎng)首頁之后我們需要獲取到慕課網(wǎng)首頁的 Python 課和爬蟲課的URL 后,才能繼續(xù)對這兩個課的子章節(jié)的 URL 進行搜索,然后一層一層的進行下去,直到結束。

Tips:深度優(yōu)先適合搜索網(wǎng)站嵌套比較深的網(wǎng)站,而廣度優(yōu)先策略更適用于對時間要求比較高,且網(wǎng)站頁面同層次 URL 比較多的頁面。

5. 爬蟲的學習基礎

學習爬蟲,我們需要如下的基礎知識:

  • Python 語言基礎
  • 數(shù)據(jù)庫基礎知識

如果大家還沒有 Python 語言或者數(shù)據(jù)庫的基礎,可以參考慕課網(wǎng)相關的 wiki 進行學習。

當然,為了方便大家理解,我會在代碼中加入詳細的注釋,即使大家沒有 Python 語言基礎,也可以先理解大致流程,然后查漏補缺,學習相應的知識。

有些同學也許會疑惑,為什么開發(fā)爬蟲一定要使用python語言呢,其他語言不可以嗎?

這就不得不說 Python 的第三方的庫了,Python 之所以那么流行,正式因為它有非常多的庫,且這些庫性能和使用都比較簡潔高效,配合著 Python 語言本身的高效,僅僅需要 10 行代碼左右就可實現(xiàn)一個簡單的爬蟲,而用 java/C/C++ 等其他語言,至少要寫幾十行代碼,因此,使用 Python 開發(fā)爬蟲程序贏得了眾多程序員的青睞。

舉個例子,比如,大家習慣了在樓下的便利店買飲料喝,雖然門口一公里外有更大的超市,我相信你也不愿意去買,因為太麻煩不夠便利。這正是 Python 語言成為爬蟲屆的主流語言的精髓所在。

后面的學習中,我們會用到幾個 Python 的第三方庫,所謂第三方庫,指的是相對于 Python 的官方庫而言(例如,系統(tǒng)“os”,時間“time”等庫\),由非官方發(fā)布的庫,如 requests 等庫,我們稱之為第三方庫。

Python 的官方庫在安裝 Python 解釋器的時候已經(jīng)默認安裝好了,而第三方庫需要我們?nèi)ナ謩影惭b。例如我們在爬蟲開發(fā)中會經(jīng)常用到的 Requests 庫。安裝第三方庫非常的簡單,只需要在終端中執(zhí)行下面這條命令即可:

pip install requests

后面,再講到具體的庫的時候,還會進行詳細的介紹。

下面列舉了一下爬蟲開發(fā)中常用的 Python 的庫的對比:

簡介
urllib python自帶的庫,不需要安裝。 但是,urlib 在不同的 python 版本中,存在明細的區(qū)別,在實際開發(fā)中,太過繁瑣,而且無法對 header 偽裝,容易被封掉,所以,現(xiàn)在使用的人數(shù)不是很多。
requests 與 urllib 相比,不僅具備了 url 的所用功能,更重要的的語法簡潔優(yōu)雅,而且,在兼容上, 完全兼容python2 和 python3,非常方便。 同時,它也可以對請求進行偽裝。
urllib3 urllib3 庫提供一些 urllib 沒有的重要特性,比如說線程安全,連接池,支持壓縮編碼等。

這里推薦使用 requests 庫,簡單方便,上手容易,對于使用爬蟲的新手來說,非常的合適。如果沒有特殊說明,我們后面的課程默認使用 requests 庫。

6. 爬蟲的法律和道德問題

最近幾年,因為編寫爬蟲程序大量抓取數(shù)據(jù)獲利的程序員可以說是層出不窮。大家可能會擔心自己在使用爬蟲的過程中會不會違法。其實,大家只要合理的使用爬蟲,是不會輕易觸犯法律的。那么,怎樣才算是合理使用爬蟲呢,我總結了以下三點供大家參考:

  • 不能通過爬蟲,高頻率高并發(fā)的對特定網(wǎng)站進行攻擊,導致目標網(wǎng)站崩潰;
  • 在爬取網(wǎng)站公共數(shù)據(jù)的時候,如果想把大數(shù)據(jù)用作商業(yè)用途,需要請專業(yè)的法務對網(wǎng)站的協(xié)議和聲明進行分析確認后再使用;
  • 如果通過爬蟲訪問一些不是公開的資源數(shù)據(jù),比如需要特定賬號和密碼登陸的網(wǎng)站,然后把數(shù)據(jù)公開出去,這些大部分都是違法的,即使是使用自己的賬號密碼登陸。

拋開法律層面,我們也要嚴于律己,遵守一些特定的規(guī)則辦事。我這里想講的就是爬蟲界的 robots 協(xié)議。這個是網(wǎng)站所有者,針對爬蟲而設計的協(xié)議,通常位于網(wǎng)站的根目錄下面。它規(guī)定了哪些目錄可以爬取,哪些不可以。我們需要遵守這項約定的協(xié)議,以避免造成不必要的麻煩。

7. 個人經(jīng)驗

在實際的工作項目中,如果我們是做爬蟲工作的工程師,在熟練掌握基本的爬蟲技術的同時,還應該去熟悉和了解數(shù)據(jù)清洗和處理技術,只有這樣,我們才能更好的與團隊進行協(xié)作。當然,這些技術,在后面的章節(jié)里,我也會一一跟大家進行介紹。

好了,讓我們開啟爬蟲世界的歡樂旅途吧!