侯潔茹 呂繼續(xù)
摘? 要:信息技術(shù)的跨越式發(fā)展,尤其是人工智能新潮浪起的時(shí)代,不論身處哪個(gè)領(lǐng)域,數(shù)據(jù)已經(jīng)成為一種重要的資源,而數(shù)據(jù)的采集很大程度上依賴于爬蟲技術(shù)。該文結(jié)合對(duì)天貓出售的商品信息的抓取,闡述數(shù)據(jù)采集的基本流程。
關(guān)鍵詞:網(wǎng)絡(luò)爬蟲技術(shù)? 天貓網(wǎng)站爬取? 數(shù)據(jù)采集
中圖分類號(hào):TP391.1;TP393.092 ? ?文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-3791(2019)11(b)-0010-02
隨著互聯(lián)網(wǎng)科技的飛速發(fā)展,網(wǎng)上購物成為人們的生活中的一部分。天貓網(wǎng)站是網(wǎng)購中具有代表性的大型電子商務(wù)平臺(tái)。它的商品信息數(shù)據(jù)十分龐大,包含了生活、學(xué)習(xí)、工作等多個(gè)領(lǐng)域的商品信息。該文以抓取天貓網(wǎng)站中的口紅商品信息為例,詳細(xì)介紹了使用網(wǎng)絡(luò)爬蟲實(shí)現(xiàn)從數(shù)據(jù)獲取到數(shù)據(jù)分析,再到數(shù)據(jù)結(jié)構(gòu)化存儲(chǔ)的過程。
1? 相關(guān)技術(shù)
該文涉及的主要技術(shù)為網(wǎng)絡(luò)爬蟲技術(shù)與python編程語言的應(yīng)用技術(shù)。
1.1 網(wǎng)絡(luò)爬蟲
網(wǎng)絡(luò)爬蟲(又稱網(wǎng)頁蜘蛛、網(wǎng)絡(luò)機(jī)器人或網(wǎng)頁追逐者)是[1]一種能自動(dòng)采集互聯(lián)網(wǎng)信息的程序。為了提高效率,節(jié)省時(shí)間,往往采用爬蟲框架來實(shí)現(xiàn)抓取。目前爬蟲技術(shù)已經(jīng)較為完善,有很多優(yōu)質(zhì)的爬蟲框架,如基于Java的webmgaic框架、Apache Nutch2框架;基于python的scrapy框架、pySpider框架;基于C語言的DotnetSpider框架、NwebCrawler框架,等等。能夠很好地實(shí)現(xiàn)分布式,以及多線程的網(wǎng)絡(luò)數(shù)據(jù)爬取。
1.2 Python語言
Python是目前較為流行的計(jì)算機(jī)程序設(shè)計(jì)語言,是一種面向?qū)ο蟮膭?dòng)態(tài)類型語言?;趐ython的網(wǎng)路爬蟲技術(shù)十分完備,對(duì)于大型的爬取任務(wù),可以分布式、多線程的抓取,對(duì)于規(guī)模較小的網(wǎng)頁爬取,python提供了能夠?qū)崿F(xiàn)http請(qǐng)求的功能模塊,如urllib庫、resquests庫;以及能夠解析網(wǎng)頁的功能模塊,如BeautifulSoup庫、lxml庫、pyquery庫。可以很好地實(shí)現(xiàn)靜態(tài)網(wǎng)頁、動(dòng)態(tài)網(wǎng)頁,以及多頁抓取等數(shù)據(jù)采集的任務(wù)。該文基于resquests庫與BeautifulSoup庫實(shí)現(xiàn)天貓網(wǎng)站的商品信息的采集。
2? 爬取天貓商品信息
天貓商品信息的爬取過程可以概括為4個(gè)部分,即URL請(qǐng)求、頁面數(shù)據(jù)解析、多頁爬取、數(shù)據(jù)的存儲(chǔ)。
2.1 URL請(qǐng)求
如同使用瀏覽器瀏覽網(wǎng)頁一般,網(wǎng)絡(luò)爬蟲需要通過URL向服務(wù)器發(fā)送請(qǐng)求。服務(wù)器在接收到請(qǐng)求后,傳回相應(yīng)的頁面。此次抓取的初始URL是在天貓官網(wǎng)搜索口紅后的頁面的URL。具體網(wǎng)址如下。
https://list.tmall.com/search_product.htm?q=%BF%DA%BA%EC&type=p
2.2 頁面數(shù)據(jù)解析
Python的requests庫可以模擬瀏覽器過URL發(fā)送Http請(qǐng)求,此次爬取任務(wù)不需要提取表單,只是信息的獲取,采用get函數(shù)實(shí)現(xiàn)。由于天貓網(wǎng)站具有一定的反扒機(jī)制,所以采用了get函數(shù)中的headers參數(shù)模擬瀏覽器信息,該參數(shù)為字典格式。此次模仿的是Google瀏覽器,具體參數(shù)如下。
{‘User-Agent:Mozilla/5.0(Windows NT 10.0; Win64;x64)AppleWebKit/537.36(KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36}
成功獲得網(wǎng)頁頁面信息后,采用BeautifulSoup庫從爬取到的網(wǎng)頁中解析出此次爬取需要獲取的商品名稱、價(jià)格、店鋪名稱以及月銷等信息,首先通過Google瀏覽器的開發(fā)者工具查看網(wǎng)頁結(jié)構(gòu),我們想要的信息在屬性class的值為“product-iWrap”的div標(biāo)簽下,如圖1所示。
利用遞歸的思想[3],結(jié)合BeautifulSoup中的find()函數(shù),解析出商品名稱、價(jià)格、店鋪名稱以及月銷等信息,并以列表的格式存儲(chǔ)。
2.3 多頁的爬取
通過上述的操作,可以很好地實(shí)現(xiàn)目標(biāo)網(wǎng)頁的信息抓取,但我們需要大量抓取數(shù)據(jù),所以要對(duì)口紅商品進(jìn)行多頁爬取。通過對(duì)不同頁[2]的URL的觀察,發(fā)現(xiàn)口紅商品改變頁碼以后,網(wǎng)址URL中只有參數(shù)s會(huì)發(fā)生變化,并且s與頁碼的關(guān)系為s=60×頁碼。依據(jù)發(fā)現(xiàn)的規(guī)律使用遞歸構(gòu)造不同頁的URL。
2.4 數(shù)據(jù)的存儲(chǔ)
將解析完的數(shù)據(jù)以csv格式存儲(chǔ)[4],使用python的文件處理語句,使其自動(dòng)實(shí)現(xiàn)。以寫入的方式創(chuàng)建并打開一個(gè)csv文件,制定文件的路徑為相對(duì)路徑,命名為“l(fā)ipstick.csv”。在數(shù)據(jù)爬取到以后,使用write()函數(shù),將數(shù)據(jù)寫入到csv文件中,并保存。
3? 存儲(chǔ)結(jié)果展示及結(jié)語
由于得到的數(shù)據(jù)較大,只對(duì)部分?jǐn)?shù)據(jù)進(jìn)行展示,具體情況見表1。
從我們獲得的數(shù)據(jù)來看即使是同一品牌的口紅,由于出售店鋪、款式、型號(hào)等因素的影響,在價(jià)格上也會(huì)有很大差別。這使得數(shù)據(jù)具有很大的價(jià)值,對(duì)數(shù)據(jù)進(jìn)行聚類、排序、篩選或者其他算法分析可以挖掘到很多有利的價(jià)值為大眾購物提供參考。
參考文獻(xiàn)
[1] 陳方,譚愛平,成亞玲,等.主題爬蟲技術(shù)研究綜述[J].湖南工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào),2008(5):13-16.
[2] 楊帆,董俊,唐宏亮,等.基于Python的淘寶評(píng)論爬取技術(shù)研究[J].中國管理信息化,2019,22(4):162-163.
[3] 廖勇毅,丁怡心.基于Python的股票定向爬蟲實(shí)現(xiàn)[J].電腦編程技巧與維護(hù),2019(5):45-46.
[4] 裴麗麗.基于Python對(duì)豆瓣電影數(shù)據(jù)爬蟲的設(shè)計(jì)與實(shí)現(xiàn)[J].電子技術(shù)與軟件工程,2019(13):176-177.