亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        大數(shù)據(jù)時(shí)代下爬蟲技術(shù)的興起

        2013-12-31 00:00:00黃聰李格人羅楚

        摘 要:大數(shù)據(jù)時(shí)代下,人類社會(huì)的數(shù)據(jù)正以前所未有的速度增長。問卷調(diào)查法、訪談法等傳統(tǒng)的數(shù)據(jù)收集方法,因樣本容量小、信度低等局限已無法滿足高質(zhì)量研究的需求,相比較而言,編寫爬蟲程序獲取到的海量數(shù)據(jù)更為真實(shí)、全面,在信息繁榮的互聯(lián)網(wǎng)時(shí)代更為行之有效。因此編寫爬蟲程序成為大數(shù)據(jù)時(shí)代信息收集的必備技能。本文主要介紹爬蟲原理、scrapy爬蟲框架,并以歌詞爬取為例,詳細(xì)講解使用scrapy爬取數(shù)據(jù)的步驟。

        關(guān)鍵詞:大數(shù)據(jù);爬蟲;scrapy;歌詞爬取

        中圖分類號(hào):TP391.3

        2012年2月12日《紐約時(shí)報(bào)》發(fā)表文章“The age of big data”[1],作為主流媒體告訴人們,大數(shù)據(jù)真實(shí)地存在人們身邊,而不是科技概念上的炒作。TeckTarget的一份調(diào)查顯示[2],伴隨業(yè)務(wù)增長以及互聯(lián)網(wǎng)、社交媒體等領(lǐng)域的發(fā)展,已有超過57.1%的企業(yè)數(shù)據(jù)量突破TB級(jí)別。在社交媒體上,Twitter每天的信息數(shù)達(dá)到3.4億,F(xiàn)acebook每天的分享和發(fā)布量達(dá)到40億,YouTube每天上傳的影片內(nèi)容多達(dá)5萬小時(shí)。全球著名咨詢公司麥肯錫對(duì)大數(shù)據(jù)給出定義[3]:無法在可容忍的時(shí)間內(nèi)用傳統(tǒng)IT技術(shù)和軟硬件工具對(duì)其進(jìn)行感知、獲取、管理、處理和服務(wù)的數(shù)據(jù)集合。我們不缺乏數(shù)據(jù),缺乏的是從數(shù)據(jù)中提取出知識(shí)的能力[4]。

        一般來說,行為科學(xué)的研究范式遵循先在原有理論基礎(chǔ)上構(gòu)造新的概念模型,然后通過數(shù)據(jù)收集、數(shù)據(jù)分析,最后證明概念模型能比現(xiàn)有理論更好地解釋現(xiàn)實(shí)中企業(yè)或人們行為的規(guī)律。這樣一來,數(shù)據(jù)收集方法的準(zhǔn)確性、全面性對(duì)后續(xù)研究而言極為關(guān)鍵。但傳統(tǒng)意義上的數(shù)據(jù)收集方法,如問卷調(diào)查法,訪談法等,其樣本容量小、信度低、且受經(jīng)費(fèi)和地域范圍所限,因而收集的數(shù)據(jù)往往無法客觀反映研究對(duì)象,有著較大的局限性。正如“信息處理的準(zhǔn)則——garbage in garbage out”所揭示的,如果輸入的是無效信息,無論處理的程序如何精良,輸出的都是無用信息??梢姡瑢?duì)比傳統(tǒng)的數(shù)據(jù)收集方法,立足于海量數(shù)據(jù)的研究有以下的優(yōu)點(diǎn):

        (1)數(shù)據(jù)的真實(shí)性。使用問卷調(diào)查法收集數(shù)據(jù),調(diào)查者難以了解被調(diào)查者是認(rèn)真填寫還是隨便敷衍。事實(shí)上,大多數(shù)被調(diào)查者因?yàn)閷?duì)調(diào)查問題不了解、回答方式不清楚等原因而敷衍了事,使得后續(xù)研究的價(jià)值大打折扣。而通過爬蟲技術(shù)能快速獲取真實(shí)、客觀反應(yīng)用戶行為的數(shù)據(jù),如用戶在社交網(wǎng)絡(luò)上對(duì)企業(yè)的評(píng)論顯然要比在接受問卷調(diào)查時(shí)的回答真實(shí)。這是因?yàn)椋罢呤怯脩糇栽概c好友分享自己的購物經(jīng)歷或用戶體驗(yàn),而后者受調(diào)查環(huán)境所影響,若被調(diào)查者存在一定的心理壓力,則做出的反饋可能會(huì)有失偏頗。

        (2)樣本容量。維克托·舍恩伯格指出[5],在成本限制下,采樣的目的就是用最少的數(shù)據(jù)得到最多的信息,前提是要保證樣本間的相互獨(dú)立性。而傳統(tǒng)的數(shù)據(jù)方法常常難以保證這一點(diǎn),因?yàn)閭鹘y(tǒng)的數(shù)據(jù)收集方法在選擇樣本時(shí)常受到調(diào)查者自身因素的影響,如挑選友善的人群或自己的朋友,這樣就難以保證樣本的隨機(jī)性和代表性,加上在過濾掉虛假樣本后,真正能用來做分析處理的樣本容量非常少。相比較而言,使用爬蟲對(duì)互聯(lián)網(wǎng)上的海量數(shù)據(jù)進(jìn)行收集、分析,即所謂的“樣本等于全體”的全數(shù)據(jù)模式,能更好地反映客觀事實(shí),而數(shù)據(jù)愈全面,分析研究的結(jié)果也就愈真實(shí)。

        可見,爬蟲不僅僅是一門技術(shù),更是在大數(shù)據(jù)環(huán)境下進(jìn)行高質(zhì)量科學(xué)研究的一把新鑰匙。掌握爬蟲技術(shù),已成為當(dāng)下研究工作者的必備技能。下面筆者將闡述爬蟲的原理及scrapy爬蟲框架,并以爬取歌詞為例,詳細(xì)講解使用scrapy爬取數(shù)據(jù)的步驟。

        1 爬蟲原理

        我們?yōu)g覽的網(wǎng)頁數(shù)以億計(jì),它們?cè)谑澜绺鞯氐姆?wù)器上存儲(chǔ)著。用戶點(diǎn)擊一個(gè)網(wǎng)頁的超鏈接以跳轉(zhuǎn)的方式來獲取另一個(gè)頁面的信息,而跳轉(zhuǎn)的頁面又有鏈接存在,網(wǎng)頁便由超鏈接組成一個(gè)巨大且錯(cuò)綜復(fù)雜的網(wǎng)。而Web爬蟲(Crawler),也稱蜘蛛(Spider),則是穿梭在這巨大的互聯(lián)網(wǎng)中下載網(wǎng)頁解析內(nèi)容的程序。

        爬蟲的應(yīng)用很廣泛。在商務(wù)智能上,企業(yè)使用爬蟲收集競(jìng)爭(zhēng)對(duì)手的情報(bào)或在社交網(wǎng)絡(luò)、虛擬社區(qū)上爬取用戶對(duì)企業(yè)的評(píng)價(jià)從而在產(chǎn)品服務(wù)上做出改進(jìn)等。在數(shù)據(jù)研究上,爬蟲能快速收集互聯(lián)網(wǎng)上的信息,為數(shù)據(jù)分析提供原始資料。

        圖1 爬蟲算法流程圖

        圖1[6]為一個(gè)簡單爬蟲算法的流程圖:從一系列種子(Seed)網(wǎng)頁開始,使用這些網(wǎng)頁的鏈接去獲取其他頁面,把這些網(wǎng)頁中的鏈接依次提取出來后,訪問鏈接對(duì)應(yīng)的頁面。在網(wǎng)絡(luò)爬蟲中,使用哈希表記錄一個(gè)頁面是否被訪問過,未被訪問的鏈接則放入隊(duì)列。由調(diào)度算法,每次從隊(duì)列中取出一個(gè)URL,然后通過HTTP協(xié)議爬取對(duì)應(yīng)頁面,保存到網(wǎng)頁庫。整個(gè)過程不斷重復(fù),直到有足夠的網(wǎng)頁被訪問過,或者已達(dá)到其他的既定目標(biāo)。

        2 使用Scrapy框架實(shí)現(xiàn)爬蟲

        Scrapy是一個(gè)用Python語言實(shí)現(xiàn)的爬蟲框架[7],任何人都可以根據(jù)各自的需求對(duì)其進(jìn)行修改,然后實(shí)現(xiàn)對(duì)目標(biāo)網(wǎng)站的抓取。

        Scrapy框架的數(shù)據(jù)流向首先從初始URL開始。調(diào)度程序(Scheduler)接受請(qǐng)求,并對(duì)URL進(jìn)行排序,接著發(fā)送請(qǐng)求給下載器(Downloader),下載器抓取網(wǎng)頁并將網(wǎng)頁內(nèi)容返回給爬蟲(Spiders)。爬蟲分析出來的結(jié)果有兩種:一種是需要進(jìn)一步抓取的鏈接,放回調(diào)度器;另一種是需要保存的數(shù)據(jù),則被送回項(xiàng)目管道(Item Pipeline),項(xiàng)目管道負(fù)責(zé)清洗數(shù)據(jù),驗(yàn)證解析出來的數(shù)據(jù),檢查數(shù)據(jù)是否和已存儲(chǔ)的數(shù)據(jù)重復(fù),有則丟棄,最終將清洗后的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫中。

        以下演示使用scrapy爬蟲框架在中文歌詞庫[8]上,對(duì)歌手的名字及歌手對(duì)應(yīng)的鏈接地址進(jìn)行抓取。

        2.1 建立爬蟲項(xiàng)目文件

        使用scrapy框架建立爬蟲項(xiàng)目,只需在命令行輸入“ scrapy startproject lyric”,scrapy框架會(huì)自動(dòng)建立一個(gè)名為lyric的工程項(xiàng)目,目錄結(jié)構(gòu):

        “l(fā)yric/

        scrapy.cfg

        lyric/

        __init__.py

        items.py

        pipelines.py

        settings.py

        spiders/

        __init__.py”

        其中scrapy.cfg是整個(gè)項(xiàng)目的配置文件。items.py是爬蟲項(xiàng)目設(shè)置存儲(chǔ)對(duì)象的文件。pipelines.py作用是將網(wǎng)頁解析后的對(duì)象存儲(chǔ)到數(shù)據(jù)庫。settings.py是項(xiàng)目的設(shè)置文件,一是根據(jù)項(xiàng)目需要,設(shè)置爬蟲的深度,避免爬蟲在網(wǎng)頁深度上無限制抓取網(wǎng)頁;二是設(shè)置爬蟲的頻率,爬蟲抓取網(wǎng)頁的頻率過快,會(huì)被該網(wǎng)站視作網(wǎng)絡(luò)攻擊被屏蔽。spiders文件夾下放置的是實(shí)現(xiàn)爬蟲邏輯的文件。

        2.2 定義存儲(chǔ)對(duì)象

        這里定義需要存儲(chǔ)的對(duì)象:歌手名稱,歌手頁面的鏈接。Items是存儲(chǔ)已抓取數(shù)據(jù)的容器,它類似于python中的字典類型,但加入了額外的保護(hù)措施。在items.py的文件下輸入以下代碼:

        “from scrapy.item import Item, Field

        class LyricItem(Item):

        singerName = Field()

        singerLink = Field()”

        2.3 編寫爬蟲邏輯

        在spiders文件夾下,編寫爬蟲抓取數(shù)據(jù)的邏輯。首先需要設(shè)定爬蟲的名字,這個(gè)名字必須是唯一的,最終調(diào)用scrapy程序抓取數(shù)據(jù)時(shí)需用到。在這個(gè)例子中,爬蟲的名字是Lyric。接著,定義爬蟲開始爬取的網(wǎng)址,即是要爬取數(shù)據(jù)的目標(biāo)網(wǎng)址。

        Scrapy編寫爬蟲程序,最核心的地方是編寫解析網(wǎng)頁程序的邏輯。parse即是用來解析網(wǎng)頁程序的方法,用來處理HTTP響應(yīng)的Response對(duì)象,用xpath表達(dá)式從網(wǎng)頁中提取對(duì)象后,賦值給用來存儲(chǔ)數(shù)據(jù)的Item對(duì)象。這里簡要介紹xpath表達(dá)式的用法[9]:

        (1)/html/head/title:表示選擇網(wǎng)頁源代碼html文檔中head元素下的title元素;

        (2)/html/head/title:表示選擇title元素的文本;

        (3)//td:表示選擇所有的 元素;

        (4)//div[@class=\"mine\"]:表示選擇所有含有屬性class等于mine的div元素。

        本例中,抓取歌手名的xpath表示式為://ul/li/a/text()。意思是提取所有ul/li/a元素下的文本,事實(shí)上,歌手名正是存取在這樣的路徑中。同理,歌手對(duì)應(yīng)的鏈接的xpath表達(dá)式為://ul/li/a/@href,即是提取所有ul/li/a元素下的超鏈接。以下是代碼邏輯:

        “from scrapy.spider import BaseSpider

        from scrapy.selector import HtmlXPathSelector

        from lyric.items import LyricItem

        class Lyric_Spider(BaseSpider):

        name = \"Lyric\"

        allowed_domains = [\"cnlyric.com\"]

        start_urls = [\"http://www.cnlyric.com/singerlist.html\"]

        def parse(self, response):

        hxs = HtmlXPathSelector(response)

        singerlist = hxs.select('//ul/li')

        items = []

        for singer in singerlist:

        item = LyricItem()

        item['singerName'] = singer.select('a/text()').extract()

        item['singerLink'] = singer.select('a/@href').extract()

        items.append(item)

        return items”

        2.4 執(zhí)行爬蟲程序

        “scrapy crawl Lyric -o items.json -t json”

        使用scrapy程序調(diào)用Lyric爬蟲,并且爬取的結(jié)果以json文件格式保存到items.json文件中。

        3 結(jié)束語

        我們正身處于“云計(jì)算、大數(shù)據(jù)、移動(dòng)互聯(lián)網(wǎng)、社會(huì)網(wǎng)絡(luò)計(jì)算……”這股時(shí)代浪潮之中。大數(shù)據(jù)時(shí)代下數(shù)據(jù)的繁榮,給科研工作者進(jìn)行科學(xué)研究帶來極佳的原材料。編寫爬蟲程序收集數(shù)據(jù),在真實(shí)、海量數(shù)據(jù)的基礎(chǔ)上進(jìn)行研究,無疑能孕育出新的科研成果,且其更貼近現(xiàn)實(shí),對(duì)商業(yè)實(shí)踐更具有指導(dǎo)意義。

        參考文獻(xiàn):

        [1]Times N Y.The age of big data[EB/OL].[2012-10-02].http://www.nytimes.com/2012/02/12/sunday-review/big-datas-impact-in-the-world.html?pagewanted=all_r=0.

        [2]孫瑞.2012年數(shù)據(jù)管理優(yōu)先度調(diào)查:數(shù)據(jù)增長速度加快[EB/OL].[2012-8-31].http://www.searchbi.com.cn/showcontent_65371.htm.

        [3]Manyika J,Chui M,Brown B,et al.Big data:The next frontier for innovation, competition, and productivity [R/OL].2012-10-02. http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation.

        [4]The Economist. Data,data,everywhere—A special report on managing information [EB/OL].[2012-10-02]. http://www.economist.com/node/15557443.

        [5]維克托·邁爾·舍恩伯格,肯尼思·庫克耶.大數(shù)據(jù)時(shí)代:生活、工作與思維的大變革[M].浙江人民出版社,2012:34-35.

        [6]Bing Liu.Web數(shù)據(jù)挖掘[M].清華大學(xué)出版社,2013:225-226.

        [7]Scrapy developers.Architecture overview[EB/OL].[2013-7-22].http://doc.scrapy.org/en/latest/topics/architecture.html.

        [8]中文歌詞庫[OL].http://www.cnlyric.com/.

        [9]Scrappy developers.Scrappy Tutorial[EB/OL].[2013-7-22].http://doc.scrapy.org/en/latest/intro/tutorial.html.

        作者簡介:黃聰(1989-),通訊作者,研究生,研究方向:數(shù)據(jù)挖掘;李格人(1959-),高級(jí)工程師,本科,主要研究方向:信息系統(tǒng)。

        96免费精品视频在线观看| 青青草成人免费播放视频| av高清视频在线麻豆免费观看| 日韩美女av一区二区三区四区| 国产亚洲精品品视频在线| 国产激情无码一区二区三区| 人妻熟妇乱又伦精品视频app| 国产美女在线精品亚洲二区| 国产白浆精品一区二区三区| 国产影院一区二区在线| 日韩三级一区二区不卡| 久久久精品一区aaa片| 99久久久无码国产精品试看| a级毛片免费观看视频| 久久精品熟女不卡av高清| 亚洲av噜噜狠狠蜜桃| 亚洲av网一区二区三区成人| 人妻体内射精一区二区三区 | 日日躁夜夜躁狠狠躁超碰97| 亚洲激情成人| 精品久久久久久国产潘金莲| 亚洲天堂线上免费av| 激情综合五月| 国产一线二线三线女| 日本精品视频一视频高清| 熟妇人妻丰满少妇一区 | 人体内射精一区二区三区| 久久久诱惑一区二区三区| 青草草视频在线观看华人免费| 欧美老熟妇乱xxxxx| 国产真实夫妇视频| 久久久精品波多野结衣| 产精品无码久久_亚洲国产精| 加勒比日韩视频在线观看 | 日本真人添下面视频免费| 国偷自产视频一区二区久| 免费的一级毛片| 国产又湿又爽又猛的视频| 粗大猛烈进出高潮视频大全| 特级a欧美做爰片第一次| 国产精品亚洲一区二区杨幂 |