第三章 研究方法
3.4 網絡爬蟲及相關原理概述
6 Python 編程語言的第三方庫,通過其可讓編程語言具有請求、響應網頁的能力。
網絡爬蟲就是一段經過程式員編寫的計算程式代碼,其實質就是一種實 現自動化去抓取大量網頁數據的計算機程式腳本,亦被稱作 web spider(網絡 蜘蛛)。技術上它的工作原理目前可以做到模仿類人行為通過瀏覽器上網的 request),用戶請求目標 URL 位址展示資訊;響應行為(response),目標 URL 地址答應用戶請求,並返回給用戶查看所需要瞭解的目標資訊。在理解
“請求-響應” 過程的同時,HTTP 協議的理解也必不可少。
HTTP 即超文字傳輸協議(HTTP,Hyper Text Transfer Protocol),一種基 於 "請求與響應" 模式的無狀態應用層協議,以 URL 作為定位網絡資源地 址的標識符而工作。例如在 http://url[:post][path]格式中,用家庭住址作為 比喻,理解就是 URL 是用於定位家在網絡上的地址,Post 就是家裡的不同 房間名稱,path 就是房間裡東西的位置。如果想要獲取家中某個房間的某樣 東西,通過 HTTP 協議既可以獲取。本文理解,HTTP 協議就是用來規定和 執行網絡定位的一種規範。
在設計網絡爬蟲時,不僅要懂爬蟲原理,而且選擇合適 Python 的協力 廠商庫也非常重要,Requests 庫和 Beautiful Soup 庫就像數據爬蟲的組合拳,
特別是 Requests 庫對理解爬蟲原理和應用有著重要意義,是深度開發爬蟲基 礎中的基礎,是“請求-響應”模式最直接應用。本文將 Requests 庫的使用方 法分為 3 類,即第一類基礎方法、第二類提取資訊方法及第三類處理資訊方 法。利用基礎方法 requests 和提取資訊方法 get 和 head 共三種方法進行數據 獲取,利用 post、put、patch 及 delete 四種資訊處理方法對資訊進行對應數 據處理操作。
Beautiful Soup 庫,在 Beautiful Soup 4.2.0 文檔中解釋中,將其定義為 是一個可以從 HTML 或 XML 檔中提取數據的 Python 庫。因為網頁是由 HTML 及各類網頁編寫語言構成,因此通過 Requests 庫我們只是獲取到了 網頁原始代碼的整體數據,其返回的是一份我們想要獲取數據的整體,而我 們往往需要的只是數據中的某個細節部分,通過 Beautiful Soup 庫就可以快 速的找到提取我們所需要的細節部分,其主要的功能就是將獲取的網頁代碼 解析並從已經解析的網頁代碼中去提取出具體數據。
API(Application Programming Interface,應用程式介面)是提供應用程 式與開發人員基於某軟件或硬體得以訪問一組常式(功能介面或服務集合)
的能力。從網絡爬蟲的角度來說,可以理解為數據擁有者即網站所有者主動 提供一個 API 介面,讓網絡爬蟲可以直接通過這個介面去訪問網站內的資 源,通過這樣的方式降低一些重複工作以及資源損耗。一般開放介面的網站 會設置相應規則,例如每天或每小時可以訪問的次數,去保證網站的穩定運 行,也希望不要被惡意的網絡爬蟲騷擾。本文在抓取網易雲音樂的相關數據 就用到 API 去獲取歌曲名稱、歌詞等對應數據。
Requests 和 Beautiful Soup 庫的配合是解決數據「抓和爬」的基礎配合 工具,綜合利用 Python 和協力廠商庫,提煉計算機思維就可以確定數據來 源入口、數據來源對象、數據位置’以及獲取方式,同時利用 Beautiful Soup 庫對目標來源進行分析,進行簡單數據清洗和組織,通過來源的確定,初步 分析,明白要抓什麼,爬取什麼資料。
綜述,網絡爬蟲的工作原理就是通過編寫計算機程式在數以萬計的位址 和資源中,利用爬蟲這種機器人,自動收集所需要的資訊;即機器人基於該 原理進行工作。而 Python 作為編寫這個工作程式的工具,在編寫時通過加 載 Requests 庫與 Beautiful Soup 庫這樣的類型的組件,配合 API 為介面進行 正常數據的訪問和獲取,通過編寫網絡爬蟲的自動化操作進行數據採集任務。
7 HTML(超文本標記語言)英文全稱為 Hyper Text Markup Language,是一種標記語言,也是網 頁製作語言。 “超文本(Hyper Text )”頁面文件內容包範圍廣泛,可以包含圖片、影響、音頻、
鏈接等非文字元素。其通過「<」和「>」符號構建成對的標記,構成了普通網頁的“頭(head)”
和“主體(body)”部分的信息。
8 CSS(層疊樣式表)和英文全稱為 Cascading Style Sheets,是一種用來表現 HTML(標准通用標記 語言的一個應用)或 XML(標准通用標記語言的一個子集)等文件樣式的計算機語言。例如在 HTML 的應用中,通過 CSS 可以定義網頁元素的位置進行格式化的排版,不同的網頁在 HTML 相同的整體標記框架下,利用 CSS 完成了個性化的配置。