商紅宇 葛蘇建
摘要:在大數據時代,越來越多的公司企業開始注意到數據的價值,開始從自有數據或者網絡數據種提取數據,并進行數據變現,發掘數據的價值。網絡爬蟲技術在此時代得到了長足發展,但是也有大量惡意爬蟲充斥網路,導致網絡癱瘓、公司利益受損。為了了解確保高性能的同時又不給被爬取網站服務器帶來巨大壓力的網絡爬蟲的設計規范,本文研究了網絡爬蟲的工作流程,設計了一個基于Python的爬取豆瓣電影數據的網絡爬蟲。提出了現階段網絡爬蟲面臨的挑戰和惡意爬蟲的危害,同時網絡爬蟲應遵守我國相關的法律規范。
關鍵詞:爬蟲;Python;大數據
一、研究背景
在這個大數據時代,人工智能蓬勃發展的時代,不論是研究領域還是工程領域,數據已經是必不可少的一部分。現代數據挖掘、神經網絡、深度學習等尖端領域所依賴的也是數據。數據成為了大數據時代的根基,而獲取數據的途徑很大程度上是依賴網絡爬蟲。作為搜索引擎的核心組成模塊,網絡爬蟲在信息檢索過程中有著舉足輕重的地位。
HTTP協議是用于從WWW服務器傳輸超文本到本地瀏覽器的傳送協議。它可以使瀏覽器更加高效,使網絡傳輸減少。它不僅保證計算機正確快速地傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪部分內容首先顯示等。
我們在瀏覽器中URL,回車之后便會在瀏覽器中觀察到頁面內容。實際上這個過程是瀏覽器向網站所在服務器發送了一個請求,網站服務器在接收到這個請求后進行解析處理,然后返回對應響應,接著響應傳回瀏覽器。響應包含頁面源代碼、數據包信息等,瀏覽器對其進行解析處理,然后將網頁呈現出來。
二、網絡爬蟲技術的研究
把互聯網看作一張大網,那么數據就是這張大網上的一個個交錯節點,而爬蟲就是在這張網上爬行的蜘蛛。網絡爬蟲還有其他的名字,比如網絡蜘蛛、網絡機器人等。本章將介紹網絡爬蟲的基本原理,并設計實現一個基于Python的網絡爬蟲,闡述網絡爬蟲面臨的挑戰。
(一)網絡爬蟲基本原理
爬蟲可以簡單概括為采集網頁并保存信息的自動化程序。互聯網用戶主要通過兩種方式來獲取網絡中的相關數據信息,一種是對瀏覽頁輸入相應請求,并下載網頁代碼,通過技術解析后形成所需信息界面;另一種是發送請求至模擬瀏覽器,請求的相關數據被提取和存放到數據庫中,爬蟲則是所有自動化獲取網絡數據的總稱。
(二)網絡爬蟲的實現
在寫爬蟲之前,我們先來看一下網站的robots.txt文件。從這份文件中,我們可以看到:User-agent: *,這是指的所有的爬蟲,它下面的Disallow后面的所有的網站目錄都不允許爬。# Crawl-delay: 5這是說的是爬蟲的延時,不能太快,不然會增加豆瓣服務器的負擔。我們在瀏覽器里用眼睛看到了我們想要的東西,電影信息,電影海報,這是我們需要的,眼睛能看到的信息都可以采集,所謂“所見即所得”。
確定了爬取目標之后就是進行網頁的下載,因為豆瓣電影是靜態頁面,所以源代碼里包含了網頁上信息,只要把源代碼下載下來就可以提取信息了。
爬蟲只需要對豆瓣網站服務器發送對應的GET請求,即可以得到頁面的源代碼。在獲取頁面時,并沒有遇到信息丟失的問題,也就是豆瓣電影并沒有使用諸如Ajax、JavaScript等技術來實現動態加載。
詳情頁鏈接在
在得到了頁面的地址后,存在隊列里然后接下來處理他們。把每一部電影的詳情頁都爬取下來進行數據提取了。爬取詳情頁的方法與爬取排行榜的方法相同。網頁的結構有一定的規則,根據特殊的節點屬性、CSS選擇器、Xpath等技術手段可以精準定位信息位置,以此來提取數據。信息提取可以使數據從雜亂無章,變得條理清晰,以便后續使用和處理。
響應獲取后,函數返回的是一個Beautiful Soup對象。詳情頁的信息提取是爬蟲中最重要也是最難的一步,這里函數利用Beautiful Soup從html中提取信息,Beautiful Soup雖然操作簡單,功能強大,但其解析速度并不算快。
一般爬蟲會將數據保存到數據庫中。蟲除了可以下載文字信息,也可保存圖片信息,電影海報下載函數使用了urllib庫進行圖片保存。
(三)網絡爬蟲技術的挑戰
早期互聯網的開放性高,數據獲取難度小。隨這各大公司對數據資產的日益看重,獲取數據的難度越來越大,雖然爬蟲技術在大數據時代得到了蓬勃發展,但是依然面臨著反爬技術的水平不斷提高、爬蟲的法律限制以及用戶隱私帶來的挑戰。惡意爬蟲指的是使用技術手段,以服務器承受不住的速度達到快速爬取而導致被爬取對象利益受損、用戶隱私數據泄露和導致網絡癱瘓的爬蟲行為。
參考文獻:
[1]張艷,吳玉全.基于Python的網絡數據爬蟲程序設計[J].電腦編程技巧與維護,2020(04):26-27.
[2]孫建言,馬雨欣,武文杰.基于Python的網絡爬蟲系統[J].電腦知識與技術,2019,15(26):61-63.
[3]黎曦. 基于網絡爬蟲的論壇數據分析系統的設計與實現[D].華中科技大學,2019.