胡雅麗
(山西青年職業學院 計算機與信息工程系,山西 太原 037000)
關鍵字:Python;網絡爬蟲;數據分析
近年來,隨著互聯網大數據、云計算以及人工智能等技術的迅猛發展,各行各業產生了大量的數據,其中數據的海量性、開放性以及實時性成為數據挖掘的主要特性。在數據共享的時代,人們如何獲取到對自己有價值的數據已經成為炙手可熱的話題,而搜索引擎以其獨有的特點抓住了這次機會,可以極大可能地搜索到大量的網頁。利用搜索引擎中重要的網絡爬蟲模塊可以實現對網頁中相關信息的自動搜集及定向采集,用戶只需要在搜索引擎中輸入關鍵字檢索網頁,一大批與之有關的網頁信息就會被查找出來,而網絡爬蟲作為引擎的重要組成部分,在搜索網頁中起著至關重要的作用。Python語言中提供了很多爬蟲框架,利用Python語言爬蟲數據變得更加高效,在一定程度上大大地節省了人力和物力資源[1]。
Python是一門動態的、跨平臺的、面向對象的以及解釋型的計算機腳本語言,由于其代碼規范簡潔、關鍵字相對較少且說明文檔很簡單,容易上手,因此也被稱為可執行的偽代碼。它可以使人們只關心完成什么樣的工作任務,而不是糾結于語法。它能夠將用其他語言制作的各種模塊很輕松地聯結在一起,常被昵稱為膠水語言,擴展性很強,可以調用C和C++等編寫的程序,也可以在其他程序中使用,或對一些軟件進行二次開發。另外,Python是開源的,它擁有非常多優秀的庫,可以用于數據分析等。更重要的是,Python與開源大數據平臺Hadoop具有很好的兼容性。
數據的類型多種多樣,通過Python數據分析人們可獲知數據中的數量、用詞以及發送時間。Python數據分析的主要目的就是將一大批隱藏的雜亂無章的數據信息提煉出來,找到其中的內在規律,幫助用戶做出正確的判斷,從而進行決策。其具有豐富和強大的庫,能夠處理很多工作,常用的類庫有IPython、Pandas以及Spyder等。其中IPython能夠提高編寫、測試以及調試Python的速度,Pandas是Python數據分析的核心庫,Spyder是一個強大的交互式Python語言開發環境[2]。一個完整的數據分析項目大致可分為5個流程,具體如圖1所示。

圖1 Python數據分析流程圖
網絡爬蟲的實質就是利用Python程序設計語言抓取網頁內容。根據用戶的需求,遵循一定的規則,自動抓取網頁中有價值的數據[3]。在爬蟲過程中,需要一個隊列來存放獲取網頁數據的所有URL,從第一個初始的URL打開指定的網頁,選擇需要進行爬蟲的內容,獲取網頁中源代碼的全部鏈接信息,將獲取到新的URL放置在URL隊列中,只要用戶爬蟲數據的任務沒有完成,這個過程將會一直執行下去,直到爬蟲結束將其關閉[4,5]。
網絡爬蟲一般分為通用和聚焦兩種類型。其中通用類型的網絡爬蟲也稱為全網爬蟲,利用搜索引擎,爬取種子頁面(百度、谷歌、雅虎等),繼而通過并行方式爬取互聯網上所有數據,主要目的是將互聯網上的網頁下載到本地,形成一個互聯網內容的鏡像備份[6]。相比于通用網絡爬蟲,聚焦類型的網絡爬蟲則是面向特定主題需求的一種網絡爬蟲程序,是有針對性的爬取與主題相關的數據,過濾掉與主題無關的數據,節省了硬件和網絡資源,頁面更新快[7]。
網絡爬蟲一般首先要找到需要爬取的網頁URL,將這些種子URL加入到待抓取URL隊列中,其次選擇合適的爬蟲工具從URL隊列中取出待取URL,通過Python代碼解析DNS得到主機的IP地址,并將URL對應的網頁下載下來,最后將爬取的網頁數據保存在數據庫中。在爬取網頁URL時,還會提取其他新的網頁URL,此時需要將新提取出來的種子URL加入到待抓取URL隊列中,再次解析DNS,從而進入下一個循環[8-10]。網絡爬蟲的工作機制如圖2所示。

圖2 網絡爬蟲的工作機制
首先需要導入Python爬蟲需要的類庫,其中os庫是標準庫,用來完成基本的交互功能,requests庫是第三方庫,可以直接構建常用的get和post請求并發起,lxml和etree是通過xpath解析DOM樹,urllib和request是負責打開瀏覽url內的html文本。導入Python類庫為:

利用User-Agent獲取當前目標網站的Http協議中頭部信息,提供當前瀏覽器類型、操作系統及版本、CPU類型、瀏覽器渲染引擎、瀏覽器語言、瀏覽器插件等信息的標識。具體為:

存儲數據的程序為:


創建主函數為:

目前,互聯網上的數據多且復雜,用戶想要在短時間內獲取到有價值的數據很困難。本文針對某網站的視頻進行爬取進行了簡單的闡述,使用具有強大功能的Python語言在爬取視頻時提供重要的支持,爬取的視頻以mp4文件的形式保存在程序中指定的目錄下,以極快的速度獲得了想要的信息。