廖美紅,陸 瑩
(廣西工商職業(yè)技術(shù)學(xué)院,廣西 南寧 530003)
商品信息屬于電子數(shù)據(jù)的一種,對其進行采集也被稱為數(shù)據(jù)采集或數(shù)據(jù)獲取,是指在一個系統(tǒng)采集數(shù)據(jù)后將數(shù)據(jù)信息傳輸?shù)搅硪粋€系統(tǒng)中,為后續(xù)系統(tǒng)數(shù)據(jù)分析做準(zhǔn)備。在大規(guī)模電商平臺中,其所包含的數(shù)據(jù)信息以消費者或企業(yè)名義廣泛分布在各大電商平臺、智能終端、管理系統(tǒng)及第三方服務(wù)平臺上,除商品買賣信息外,還包括企業(yè)和消費者基本信息、空間環(huán)境信息等。各類數(shù)據(jù)信息在邏輯上存在某種關(guān)聯(lián),數(shù)據(jù)傳遞也具有很強的目的性,因此對于數(shù)據(jù)采集來說,只有抓住整個動態(tài)流通過程的核心要素,才可準(zhǔn)確找出自己所需的信息數(shù)據(jù)。在大數(shù)據(jù)環(huán)境下,電商平臺中的數(shù)據(jù)是公開、共享的,但數(shù)據(jù)間的各種信息傳輸和分析需要有一個采集整理的過程。本文研究的信息采集主要針對商品信息。
計算機技術(shù)的飛速發(fā)展,促進了不同領(lǐng)域技術(shù)的融合,其衍生出來的行業(yè)新概念,也在不斷擴大應(yīng)用空間,并潛移默化地影響人們的生活習(xí)慣。電子商務(wù)的出現(xiàn)為人們購物提供了新的選擇,目前國內(nèi)關(guān)注度較高的電商平臺有京東、淘寶、當(dāng)當(dāng)網(wǎng)、蘇寧易購等,這些應(yīng)用平臺在功能和結(jié)構(gòu)上均有著自身獨特的優(yōu)勢,商品信息豐富,種類繁多。同時,它們具有諸多相似性,都包含以下幾種HTML結(jié)構(gòu)。
1.1.1 商品搜索框
大規(guī)模電商平臺所容納的商品種類繁多,為確保消費者在最短時間找到自己心儀的商品,節(jié)省時間和精力,平臺會提供檢索服務(wù),即在頁面檢索框中輸入想要查找的商品信息(名稱、品牌、流行詞匯等),便可快速查詢到該商品,以及相關(guān)商品信息。為方便消費者尋找和使用,“商品搜索框”通常會出現(xiàn)在平臺首頁上方中間處或顯眼處,外形設(shè)計也符合大眾審美標(biāo)準(zhǔn)。
1.1.2 分頁按鈕
分頁按鈕是一種比較有特色的HTML結(jié)構(gòu),在降低時間損耗和減輕性能壓力方面具有突出作用。眾所周知,應(yīng)用平臺為最大限度地滿足消費者瀏覽和購買需求,往往會承載大量商品信息,若該商品符合大多數(shù)消費者消費標(biāo)準(zhǔn)和要求,當(dāng)單次請求發(fā)出后,服務(wù)器會在資源完成搜集后提供數(shù)量龐大的商品信息,這會導(dǎo)致性能壓力瞬間增大,需要耗費大量時間。分頁功能的實現(xiàn),在一定程度上解決了這一問題,單次請求行為發(fā)生后,系統(tǒng)或服務(wù)器會分批次加載商品信息[1]。結(jié)合實際應(yīng)用效果來看,分頁功能可解決如下兩類問題。
第一,降低單次請求對服務(wù)器產(chǎn)生的性能壓力,減少等待時間。以圖片瀏覽請求為例,網(wǎng)絡(luò)消費中,消費者的圖片瀏覽需求更多,目的性也更強,往往在一次購買請求發(fā)生前,需要瀏覽幾十張甚至是上百張圖片,若這些圖片被一次性傳遞過來,在下載量激增現(xiàn)象發(fā)生之后,服務(wù)器需要承擔(dān)巨大的安全風(fēng)險,相應(yīng)的,數(shù)據(jù)加載時間也會更長。站在消費者角度,圖片瀏覽需要一定時間,同一時間接收上百張圖片,并不利于提高瀏覽質(zhì)量。分頁處理后,服務(wù)器性能壓力會減輕,數(shù)據(jù)加載時間會得到很好控制,更為關(guān)鍵的是,一旦消費者尋找到自己心儀的商品圖片后,便不再需要未加載出的圖片。
第二,阻止低價值請求行為的發(fā)生。所謂“低價值請求”,即指無意義的、需求度低的請求。以商品搜索為例,假如某種商品信息數(shù)量為100,需要20張頁面分別展示,在沒有分頁功能支持下,一次請求發(fā)生后,系統(tǒng)便需要把全部100條信息加載出來,但它們未必都是“必須信息”,可能消費者最需要的信息處于前10條信息之中,在這種情況下,后面90條信息都可被視為低價值信息,而這90條信息的加載行為,自然就被認(rèn)為是無意義的。分頁功能實現(xiàn)后,消費者只需要瀏覽前10條信息即可,后面的加載行為將不會發(fā)生。
1.1.3 商品詳情頁
商品詳情頁是展示商品詳細(xì)信息的頁面,基于結(jié)構(gòu)需求和商品內(nèi)容組成,按照一定的邏輯關(guān)聯(lián)性進行嵌套組裝。消費者可以根據(jù)實際需求點擊相應(yīng)的按鈕查詢商品信息,包括商品參數(shù)、購買記錄與評價、促銷活動等。
大型電商平臺的基本交互流程:第一,輸入需要查詢的商品名稱或信息關(guān)鍵詞后,點擊搜索框下方的“搜索”按鈕,系統(tǒng)會根據(jù)請求跳轉(zhuǎn)至相應(yīng)頁面。第二,點擊翻頁操作,頁面跳轉(zhuǎn)后會展示出新的商品信息。第三,點擊目標(biāo)商品,進入商品詳情頁。
1.3.1 靜態(tài)加載
靜態(tài)加載是相對于動態(tài)加載的一種信息加載方式。服務(wù)器接收到信息請求后,按照內(nèi)容需求,將相應(yīng)的數(shù)據(jù)信息發(fā)送至請求端,數(shù)據(jù)內(nèi)容展示給消費者之前,需要經(jīng)過瀏覽器渲染。靜態(tài)加載方式下的信息加載,主要針對變化頻率較低的商品信息,包括商品介紹、售后服務(wù)等[2]。
1.3.2 動態(tài)加載
在商品信息加載方式上,靜態(tài)加載與動態(tài)加載間的關(guān)系,有點類似于計算機網(wǎng)絡(luò)中的靜態(tài)IP地址和動態(tài)IP地址間的關(guān)系?!办o”和“動”最明顯的區(qū)別在于后者變化頻率更高,具有更好的安全性。但從這個角度講,當(dāng)某電商不希望自己的重要商品信息或關(guān)鍵性數(shù)據(jù)輕易被別人所知時,便會采用動態(tài)加載方式將信息數(shù)據(jù)呈現(xiàn)出來。動態(tài)加載的內(nèi)容一般都是變化頻率較高,實時交互性強,以及比較重要的數(shù)據(jù)。
正常情況下,電商平臺在展示商品信息和促銷活動時,會按照一定的規(guī)則或順序進行排列,如按照價格高低進行排列,按照交易量大小進行排列,等等。用戶根據(jù)按鈕內(nèi)容提示操作,便可獲得相應(yīng)信息結(jié)果。但隨著交易量不斷上升,商品款式的增加,商品價格的變化,以及受市場行情等因素影響,排列結(jié)果會不斷發(fā)生變化,且存在一定重疊性。因此,重復(fù)加載問題便不可避免地發(fā)生。例如,用戶在當(dāng)前的商品檢索結(jié)果頁面中瀏覽商品時,位于頁面底端的幾個排序結(jié)果靠后的商品,在下一個檢索結(jié)果頁中有可能會出現(xiàn)在頁面頂端的排序結(jié)果靠前的位置,從而造成重復(fù)加載。
電商平臺中的產(chǎn)品信息量是非常龐大的,因此對其商品信息進行采集,也屬于大數(shù)據(jù)信息采集,以下是常見的大數(shù)據(jù)信息采集技術(shù)及其優(yōu)劣勢分析[3]。
通過各軟件廠商開放數(shù)據(jù)接口,實現(xiàn)不同軟件數(shù)據(jù)的互聯(lián)互通,是當(dāng)前階段最為常見的一種數(shù)據(jù)對接方式。相比其他方式,軟件接口方式具有以下優(yōu)勢。
第一,在該方式下,數(shù)據(jù)傳遞可靠性會更高,應(yīng)用性更強,發(fā)展空間更廣,數(shù)據(jù)重復(fù)現(xiàn)象出現(xiàn)概率較低。第二,最大限度地滿足實時數(shù)據(jù)應(yīng)用需求。但它也存在一些缺陷:①接口開發(fā)成本過高,需要大量資金支持。②接口開發(fā)所涉及的工作內(nèi)容較多且工作量大,一般需要多個軟件廠商同時支持。③可擴展性非常有限,若要增加新任務(wù)模塊,必須改動原有數(shù)據(jù)接口編碼,費時費力。
軟件機器人是現(xiàn)階段比較前沿的軟件數(shù)據(jù)對接技術(shù),既能實現(xiàn)客戶端軟件數(shù)據(jù)的采集,也能實現(xiàn)對網(wǎng)站中的軟件數(shù)據(jù)展開采集。常見的如博為小幫軟件機器人,產(chǎn)品設(shè)計原則為“所見即所得”,即不需要軟件廠商配合的情況下,采集軟件界面上的數(shù)據(jù),輸出的結(jié)果是結(jié)構(gòu)化的數(shù)據(jù)庫或者Excel表。
如果只需要界面上的業(yè)務(wù)數(shù)據(jù),或者遇到軟件廠商不配合/倒閉、數(shù)據(jù)庫分析困難的情況下,利用軟件機器人采集數(shù)據(jù)更可取,尤其是詳情頁數(shù)據(jù)的采集功能比較有特色,其技術(shù)特點如下:無須原軟件廠商配合;兼容性強,可采集匯聚Windows平臺各種軟件系統(tǒng)數(shù)據(jù);輸出結(jié)構(gòu)化數(shù)據(jù);即配即用,實施周期短、簡單高效;配置簡單,不用編程,每個人都可以親自制作一個軟件機器人;價格相對人工采集和信息接口方式降低不少。但是,軟件數(shù)據(jù)的實時性存在一定的限制。
網(wǎng)絡(luò)爬蟲是模擬客戶端發(fā)生網(wǎng)絡(luò)請求,接收請求響應(yīng),按照一定的規(guī)則,自動地抓取萬維網(wǎng)信息的程序或者腳本。現(xiàn)階段宣傳較廣的有Python等[4],但是使用爬蟲采集數(shù)據(jù)時存在輸出數(shù)據(jù)多為非結(jié)構(gòu)化數(shù)據(jù);只能采集網(wǎng)站數(shù)據(jù),容易受網(wǎng)站反爬機制影響;使用人群狹窄等缺點。想要使用網(wǎng)絡(luò)爬蟲技術(shù)進行數(shù)據(jù)采集,需要有專業(yè)的編程知識才能玩轉(zhuǎn)。
開放數(shù)據(jù)庫是采集融合數(shù)據(jù)最直接的一種方式。與其他信息數(shù)據(jù)采集一樣,它也有自己的優(yōu)點和不足。
開放數(shù)據(jù)庫方式的優(yōu)點:能夠?qū)崿F(xiàn)對目標(biāo)數(shù)據(jù)的直接獲取,即便在信息承載量龐大的數(shù)據(jù)庫中,也可以很容易查詢到所需要數(shù)據(jù),且準(zhǔn)確性很高。
開放數(shù)據(jù)庫方式的不足:基于任何目的和目標(biāo)的數(shù)據(jù)獲取行為,都必須有協(xié)調(diào)各廠商數(shù)據(jù)庫作為支持,也就是說,若其中某一家或某幾家廠商出于安全角度不同意數(shù)據(jù)庫協(xié)調(diào),該方式便無法發(fā)揮作用。
本次實驗使用Python3.0作為編程語言,使用Splash模擬瀏覽器操作,并對商品頁面中的Java cript代碼進行預(yù)渲染,爬蟲部分使用了Scrapy爬蟲框架對數(shù)據(jù)進行抓取和解析,數(shù)據(jù)的持久化儲存選擇了MongDB[5]。
Splash的本質(zhì)是一個輕量級Web2瀏覽器,作為一種Java cript渲染引擎,Splash的功能包括以下幾個方面:第一,相同時間段及同一時刻可處理兩個或兩個以上的Web頁面。第二,為用戶返回經(jīng)過渲染的頁面。第三,以最合理的方式阻止圖片加載,充分提升頁面渲染速度。第四,在 pagecon text中自動執(zhí)行已被定義的(用戶)Java cript腳本。
值得注意的是,Splash在返回document樹結(jié)構(gòu)時是以HTML的形式來完成的,因此可以選擇自己所擅長的HTML解析器進行頁面解析。Splash在執(zhí)行腳本任務(wù)時,若腳本內(nèi)容是由用戶以自定義方式進行編寫的,那么它將具有相應(yīng)的瀏覽器自動化功能,可被作為瀏覽器自動化工具進行使用。
作為一種已經(jīng)非常成熟的爬蟲框架,Scrapy在Python支持下,能夠為使用者提供很多實用性功能,這會使數(shù)據(jù)爬取行為更加可靠、有效。selector是Scrapy自帶的選擇器,借助選擇器所提供的功能,用戶可以按照自己的想法對數(shù)據(jù)信息進行提取。比如,通過xpath表達(dá)式,在HTML/xml結(jié)構(gòu)中提取出自己感興趣的數(shù)據(jù)信息,或者利用css選擇器提取自己需要的數(shù)據(jù)信息,并隨著數(shù)據(jù)提取行為和提取經(jīng)驗,以及提取需求的不斷增加,對css選擇器功能做進一步擴展。
帶有交互式特征的shell控制臺,對于完成高質(zhì)量爬蟲程序編寫有很大幫助,也支持對程序的調(diào)試。其可擴展性表現(xiàn)為支持用戶以自定義方式插入中間件,從而達(dá)到擴展框架的目的。
在數(shù)據(jù)庫方面,作為當(dāng)下最流行的數(shù)據(jù)庫系統(tǒng),MongoDB開源數(shù)據(jù)庫系統(tǒng)應(yīng)用基礎(chǔ)是C++和分布式文件存儲,支持Python、Java、PHP等多個主流編程語言;在采集、處理、存儲、傳遞大數(shù)據(jù)方面,它具有明顯優(yōu)勢,核心特征表現(xiàn)為支持高并發(fā),靈活程度高,可靠性強。
實驗環(huán)境搭建需要從以下幾個方面出發(fā):第一,安裝Docker。Splash需要在Docker環(huán)境下運行,Docker環(huán)境創(chuàng)建完成后,需要配置國內(nèi)鏡像源,以解決從DockerHub中拉取Splash鏡像慢和拉取失敗的問題。第二,安裝Scrapy-Splash,提升配置內(nèi)容使用價值。第三,安裝爬蟲框架。一般采用pip install scrapy方式進行安裝,但經(jīng)常會遇到超時被拋出問題,導(dǎo)致無法成功下載。對此,選擇國內(nèi)鏡像進行下載會提高成功概率。
Scrapy框架結(jié)構(gòu),以及其內(nèi)部組件間數(shù)據(jù)處理方式與具體流向,官方文檔已給出詳細(xì)說明,礙于篇幅有限,這里不做介紹。下面將主要介紹如何在組件工具支持下快速實現(xiàn)多平臺數(shù)據(jù)信息采集。
商品數(shù)據(jù)采集方式有兩種,一是通過Splash對頁面中的內(nèi)容進行動態(tài)渲染(模擬瀏覽器操作的本質(zhì)也是動態(tài)執(zhí)行自定義js腳本),例如商品檢索頁面、商品詳情頁面。采集時,需要將默認(rèn)的Scrapy Request對象,經(jīng)過Scrapy-Splash轉(zhuǎn)換為Splash可以接受的Splash Request對象,再由Splash訪問對應(yīng)的頁面,返回經(jīng)過渲染后的內(nèi)容。二是不經(jīng)過Splash預(yù)渲染,直接對目標(biāo)數(shù)據(jù)信息進行訪問,并獲取所需要信息。例如,在展示商品圖片和相關(guān)內(nèi)容的評價信息時,Splash返回商品詳情頁后,可根據(jù)實際需求,以解析的方式獲取圖片地址。
本文對大規(guī)模電商的商品信息與大規(guī)模電商平臺的特征做出了闡釋,并就常見的信息采集技術(shù)進行分析,最后就面向大規(guī)模電商平臺的商品信息采集技術(shù)進行概述。結(jié)果表明,商品信息采集技術(shù)能有效采集不同平臺的商品數(shù)據(jù),具有一定的應(yīng)用價值和推廣性。