App下載

python爬蟲有什么實際作用

猿友 2021-01-29 14:01:26 瀏覽數(shù) (5639)
反饋

小編說:網(wǎng)絡(luò)爬蟲是一種伴隨著互聯(lián)網(wǎng)誕生與演化的"古老”的網(wǎng)絡(luò)技術(shù),隨著互聯(lián)網(wǎng)進入大數(shù)據(jù)時代,爬蟲技術(shù)迎來了一波新的振興浪潮。 本文通過企業(yè)內(nèi)部與互聯(lián)網(wǎng)兩個場景向大家講書爬蟲發(fā)揮了哪些重要作用。本文選自《蟲術(shù)——Python絕技》一書。

在大數(shù)據(jù)架構(gòu)中,數(shù)據(jù)收集與數(shù)據(jù)存儲占據(jù)了極為重要的地位,可以說是大數(shù)據(jù)的核心基礎(chǔ)。而爬蟲技術(shù)在這兩大核心技術(shù)層次中占有了很大的比例。為何有此一說?我們不妨通過一個實際應(yīng)用場景來看看爬蟲到底發(fā)揮了哪些作用?

主動——爬蟲的重點在于"爬取”(Crawl),這是一種主動性的行為。換句話說,它是一個可以獨立運行且能按照一定規(guī)則運作的應(yīng)用程序。

自動化——由于處理的數(shù)據(jù)可能很分散,數(shù)據(jù)的存留具有一定的時效性,所以它是一套無人值守的自動化程序。

在我接近20年的IT從業(yè)生涯中,企業(yè)管理系統(tǒng)是我參與過的項目或產(chǎn)品中占比最大的。在這些項目與產(chǎn)品的開發(fā)過程中,我觀察到很多企業(yè)內(nèi)部其實有非常多的數(shù)據(jù)處理場景可以用爬蟲技術(shù)進行處理,從而能以驚人的效率取代原有的人工化的操作。

以我近年來在電商企業(yè)內(nèi)部所見為例,阿里巴巴(簡稱阿里)已顯現(xiàn)出它在電子商務(wù)一統(tǒng)全球的實力與地位,幾乎可以將電商與阿里之間劃一個等號。阿里為各個店鋪和商家提供了各種各樣優(yōu)秀的運營工具。我們會理所當(dāng)然地認(rèn)為電商企業(yè)內(nèi)部的信息化管理程度一定很高,不是嗎?然而事實恰恰相反,我見過的多數(shù)中小型的電商企業(yè)甚至是三板掛牌企業(yè)內(nèi)部的信息化水平仍然非常落后,不少企業(yè)仍然依賴Excel這樣基于大量人力為主導(dǎo)的表格處理。那么問題來了,為何阿里巴巴、京東這些電商平臺已經(jīng)提供了大量優(yōu)質(zhì)運營工具,而電商企業(yè)的信息化水平卻很低,還需要靠勞動密集型的方式進行運營呢?

首先,電商企業(yè)不會只在某一平臺上開店,通常都會在多個平臺同時開多個店鋪以拓寬市場的銷售渠道;其次,電商企業(yè)之間、電商與供貨商之間缺乏統(tǒng)一的數(shù)據(jù)交換標(biāo)準(zhǔn),通常只依賴于一些技術(shù)陳舊的 ERP 來維持日常的運營。

電商企業(yè)通常只能通過某一平臺上提供的專用工具監(jiān)測某些產(chǎn)品的價格波動和銷售情況,而無法全面、統(tǒng)一地了解他們所銷售的產(chǎn)品在各大平臺的具體表現(xiàn)如何。然而這樣的需求很明顯是迫切的,因為只有了解銷售數(shù)據(jù)的變化才能實時調(diào)節(jié)銷售的策略。我見過最多的做法就是企業(yè)安排一位專人從各大電商平臺中導(dǎo)出運行的數(shù)據(jù),然后合并到 Excel 中,再進行一番統(tǒng)計,手工做出各種統(tǒng)計報表作為分析依據(jù),這種做法往往對某一個單品就得做一次!

(1)缺乏統(tǒng)一的數(shù)據(jù)來源——這是不可調(diào)和的,因為電商運行的數(shù)據(jù)源本來就具有多樣性。

(2)結(jié)構(gòu)化數(shù)據(jù)與非結(jié)構(gòu)化數(shù)據(jù)并存——企業(yè)間最常見的數(shù)據(jù)交互格式是Excel,交互工具是微信和QQ。

(3)一個數(shù)據(jù)存在多種時間版本——QQ或者微信上的同一個文件修改多了且重復(fù)傳會出現(xiàn)各種的 data.xlsx、data(1).xlsx…data(n).xlsx。

(4)數(shù)據(jù)結(jié)構(gòu)可能存在隨意性——Excel文件內(nèi)很少會看見用英文命名的列,甚至相同作用的列很有可能會采用不同的中文名。

(5)數(shù)據(jù)查找變得困難——在電商企業(yè)與供貨商之間要找出某個時段相同的數(shù)據(jù)副本可能是一件極為可怕的事件。

我們不妨來大膽地假設(shè)一下,如果將這些事情換成讓爬蟲去處理,那么情況會變成什么樣子呢?

(1)每天爬蟲在一個固定的時間到淘寶、京東或者其他電商平臺上自動下載商家當(dāng)前的營業(yè)數(shù)據(jù)。

(3)從內(nèi)網(wǎng)的某臺PC的指定文件夾中下載每天從其他經(jīng)銷商發(fā)來的Excel文件,整理后保存到數(shù)據(jù)庫。

(4)發(fā)現(xiàn)某些商品庫存不足自動生成供貨商規(guī)定格式的訂貨單,通過電子郵件發(fā)出。

(5)決策者(運營經(jīng)理/老板)在手機或 PC 中通過數(shù)據(jù)可視化工具查看每天的數(shù)據(jù)統(tǒng)計結(jié)果,或者由爬蟲系統(tǒng)直接生成統(tǒng)計報表發(fā)到他們的郵箱中。

此時你可能會產(chǎn)生這樣的疑問:爬蟲不是單單爬取數(shù)據(jù)的嗎?為何還能處理這么多的事情呢?這還是爬蟲的技術(shù)領(lǐng)域嗎?答案是肯定的,上面這個例子是由我經(jīng)歷過的一個項目中的真實案例簡化而來的,爬蟲的這些行為融合了對爬取數(shù)據(jù)的后處理與Python自動化后得到的效果。其實爬蟲能做到的事情可以更多,具體的實現(xiàn)與企業(yè)內(nèi)部的實際需求相關(guān)。而在互聯(lián)網(wǎng)中,它更像是一個具有"智能”的機器人。

企業(yè)內(nèi)網(wǎng)爬蟲只是互聯(lián)網(wǎng)爬蟲的一個小范圍的應(yīng)用,是爬蟲技術(shù)與自動化技術(shù)的一種綜合性應(yīng)用,而且自動化技術(shù)的占比可能會比爬蟲技術(shù)手段更多一些。


與企業(yè)爬蟲相比,互聯(lián)網(wǎng)爬蟲就顯得更為單一與常見,在這個數(shù)據(jù)唾手可得的時代,在數(shù)據(jù)中用爬蟲淘金并不鮮見。如搜索引擎本身就是"蟲術(shù)大師”,只要是它們想爬的網(wǎng)站,幾乎是沒有爬不穿的。App Store 上最火的內(nèi)容性 App 總是某些新聞類的聚合應(yīng)用,大多數(shù)網(wǎng)站開發(fā)者都知道那只是一個聚合了各種新聞網(wǎng)站鏈接的綜合性平臺,它們的內(nèi)容也是靠"放蟲”才可能在各大新聞門戶中獲取第一手的新聞信息。更重要的是,這些新聞信息都是"免費”的,任何一個用戶都可以輕易地從互聯(lián)網(wǎng)上獲取,這個用戶當(dāng)然也可以包括"蟲子”。

互聯(lián)網(wǎng)中存在大量如新聞資訊一類的免費內(nèi)容,或是政府、企業(yè)、第三方機構(gòu)、團體甚至個人共享的各種數(shù)據(jù)。例如,我們可以輕易地到氣象局的網(wǎng)站上獲取近十年某個地區(qū)的降雨量信息,或者從證券交易所獲取當(dāng)天各支股票的價格走勢,又或者到微博上獲知當(dāng)天最具有傳播性的某個事件的詳情。換句話說,只要有清晰的目標(biāo)數(shù)據(jù)源,只要你具有對數(shù)據(jù)源具有訪問的權(quán)限,那么你也可以讓爬蟲為你代勞,一次性從數(shù)據(jù)源上獲取所有你想要的數(shù)據(jù)。


要通過爬蟲順利地從互聯(lián)網(wǎng)中爬取數(shù)據(jù),那么就得了解這些數(shù)據(jù)的特質(zhì),然后采取針對性的手段才可能做到無往不利。一般來說,互聯(lián)網(wǎng)中可爬取的數(shù)據(jù)可分為以下幾種:

(1)一般性的網(wǎng)頁——符合W3C規(guī)范的網(wǎng)頁都可視為一種半結(jié)構(gòu)化的內(nèi)容,可以通過一些頁面元素分析工具從網(wǎng)頁中讀取指定數(shù)據(jù),由于網(wǎng)頁開發(fā)的自由度極大,幾乎沒有哪個網(wǎng)站的結(jié)構(gòu)是完全相同的。而且可變因素也很多,可能網(wǎng)頁讀取要通過權(quán)限的審查,或者網(wǎng)頁由客戶端的JavaScript進行繪制才能呈現(xiàn)最終效果,甚至網(wǎng)頁可能來源于CDN,其內(nèi)容未必是最新的,只是某個網(wǎng)絡(luò)緩存的副本,等等。不過不用擔(dān)心,當(dāng)你完全掌握了蟲術(shù),這一切對你將不再是阻擋。

(2)API資源——API資源是最適合爬取的數(shù)據(jù)源(沒有之一),因為 RESTful API 都是結(jié)構(gòu)化數(shù)據(jù),會以 XML 或者 JSON 的形式進行調(diào)用或者返回,這些數(shù)據(jù)內(nèi)容即使沒有API說明手冊一般也能讀懂。

(3)文件資源——文件資源屬于最麻煩的數(shù)據(jù)源了,除非爬取的文件是以結(jié)構(gòu)化數(shù)據(jù)格式呈現(xiàn)的,否則作為自由文本,由于是非結(jié)構(gòu)化的,我們需要對文本的內(nèi)容進行一些后處理,要讓爬蟲"讀懂”這些文本內(nèi)容,再判斷哪些內(nèi)容是獲取的目標(biāo)。

(4)媒體資源——如圖片和視頻等,其爬取的動作基本與文件類似,只是由于圖片與視頻等資源一般來說都比較大,可能還需要對文件的元信息進行一些分析以判斷其是否具有爬取的價值,以避免讓爬蟲過多地消耗不必要的網(wǎng)絡(luò)流量與爬取時間。

爬蟲涉及的技術(shù)領(lǐng)域很多,運用的技術(shù)也非常龐雜,從基本的網(wǎng)絡(luò)訪問到復(fù)雜的機器學(xué)習(xí),可能會讓初入門徑者有望而卻步的想法。為了讓大家有一個全面的認(rèn)識,我們特意將初級、中級、高級三個階段中所要學(xué)習(xí)與使用的技術(shù)歸納成下圖以作參考。

互聯(lián)網(wǎng)最激烈的對抗戰(zhàn)場,除了安全專家與黑客之間,大概就是爬蟲與反爬蟲領(lǐng)域了。據(jù)統(tǒng)計,爬蟲流量早已超過了人類真實訪問請求流量?;ヂ?lián)網(wǎng)充斥著形形色色的爬蟲,云上、傳統(tǒng)行業(yè)都有不同規(guī)模的用戶被爬蟲愛好者盯上,這些爬蟲從哪里來?爬取了誰的數(shù)據(jù)?數(shù)據(jù)將被用于何處? 

0 人點贊