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