第55天 爬蟲的介紹

2022-01-29 17:24:55 字數 2059 閱讀 6058

by 閒歡

作為程式設計師,相信大家對「爬蟲」這個詞並不陌生,身邊常常會有人提這個詞,在不了解它的人眼中,會覺得這個技術很高階很神秘。不用著急,我們的爬蟲系列就是帶你去揭開它的神秘面紗,探尋它真實的面目。

網路爬蟲(又被稱為網頁蜘蛛,網路機械人),是一種按照一定的規則,自動地抓取全球資訊網資訊的程式或者指令碼。另外一些不常使用的名字還有螞蟻、自動索引、模擬程式或者蠕蟲。

通俗地講,我們把網際網路比作一張大蜘蛛網,每個站點資源比作蜘蛛網上的乙個結點,爬蟲就像乙隻蜘蛛,按照設計好的路線和規則在這張蜘蛛網上找到目標結點,獲取資源。

為什麼我們需要使用爬蟲呢?

大家可以想象一下乙個場景:你非常崇拜乙個微博名人,對他的微博非常著迷,你想把他十年來微博上的每一句話摘抄下來,製作成名人語錄。這個時候你怎麼辦呢?手動去 ctrl+c 和 ctrl+v 嗎?這種方法確實沒錯,資料量小的時候我們還可以這樣做,但是資料成千上萬的時候你還要這樣做嗎?

上面兩種場景,使用爬蟲技術可以很輕易地解決問題。所以,我們可以看到,爬蟲技術主要可以幫助我們做兩類事情:一類是資料獲取需求,主要針對特定規則下的大資料量的資訊獲取;另一類是自動化需求,主要應用在類似資訊聚合、搜尋等方面。

從爬取物件來看,爬蟲可以分為通用爬蟲和聚焦爬蟲兩類。

聚焦網路爬蟲(focused crawler),是指選擇性地爬取那些與預先定義好的主題相關頁面的網路爬蟲。和通用網路爬蟲相比,聚焦爬蟲只需要爬取特定的網頁,爬取的廣度會小很多。例如我們需要爬取東方財富網的**資料,我們只需要針對東方財富網的頁面制定規則爬取就行。

通俗地講,通用爬蟲就類似於乙隻蜘蛛,需要尋找特定的食物,但是它不知道蜘蛛網的哪個節點有,所以它只能從乙個節點開始尋找,遇到節點就看一下,如果有食物就獲取食物,如果這個節點指示某某節點有食物,那它就順著指示去尋找下個節點。而聚焦網路爬蟲就是這只蜘蛛知道哪個節點有食物,它只需要規劃好路線到達那個節點就能獲取到食物。

這個過程其實就是使用者輸入**之後,經過dns伺服器,找到伺服器主機,向伺服器發出乙個請求,伺服器經過解析之後,傳送給使用者的瀏覽器 html、js、css 等檔案,瀏覽器解析出來,使用者便可以看到形形色色的了。

因此,使用者看到的網頁實質是由 html **構成的,爬蟲爬來的便是這些內容,通過分析和過濾這些 html **,實現對、文字等資源的獲取。

url,即統一資源定位符,也就是我們說的**,統一資源定位符是對可以從網際網路上得到的資源的位置和訪問方法的一種簡潔的表示,是網際網路上標準資源的位址。網際網路上的每個檔案都有乙個唯一的url,它包含的資訊指出檔案的位置以及瀏覽器應該怎麼處理它。

url 的格式由三部分組成:

由於爬蟲的目標是獲取資源,而資源都儲存在某個主機上,所以爬蟲爬取資料時必須要有乙個目標的 url 才可以獲取資料,因此,它是爬蟲獲取資料的基本依據,準確理解它的含義對爬蟲學習有很大幫助。

我們接下來的篇章主要討論聚焦爬蟲,聚焦爬蟲的工作流程如下圖:

從這個爬蟲的流程來看,大家應該能夠聯想到學習爬蟲需要學習的關鍵步驟。首先我們需要像瀏覽器一樣請求某個 url ,來獲取某個主機的資源,那麼請求的方法和正確地獲取內容就是我們學習的重點。我們獲取到資源(也就是請求 url 之後獲得的響應內容)之後,我們需要對響應的內容進行解析,從而獲取到對我們有價值的資料,這裡面的解析方法就是學習的重點了。我們獲取到資料之後,接下來就需要儲存資料了,資料的儲存方法也很重要。

所以我們學習的爬蟲技術,實際上可以歸納為請求解析儲存三個基本問題。熟練掌握這三個問題對應的解決方法,爬蟲技術就算是掌握了。大家在學習爬蟲的過程中,緊緊圍繞這三個問題展開,就不會走彎路了。

文中示例**:

Python學習第55天(IO多路復用)

昨天開始講到通過設定setblocking實現當沒有接收的時候我們會每隔一段時間去看是否收到,從而是空置過程的程式歸我們使用。然後今天我們將引入select模組,來實現監測的效果。io multiplexing這個詞可能有點陌生,但是如果我說select,epoll,大概就都能明白了。有些地方也稱這...

python自學第11天爬蟲例項學習

測試返回200 下面展示一些內聯 片。import requests r requests.get url if r.status code 200 raise exception 返回200則進行下一步爬取url import requests r requests.get url if r.st...

第1天 12天搞定Python網路爬蟲,吃裡爬外?

人力資源部漂亮的小mm,跑來問我 老陳,資料分析和爬蟲究竟是關係呀?說實在的,我真不想理她,因為我一直認為這個跟她的工作關係不大,可一想到她負責我負責部門的招聘工作,我只好勉為其難地跟她說 資料分析,吃里,爬蟲,爬外,合在一起就是吃裡爬外。大資料時代,要想進行資料分析,首先要有資料 單靠公司那幾條毛...