Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
片來(lái)源@視覺(jué)中國(guó)
文 | 互聯(lián)網(wǎng)深讀(ID:internetshendu),作者丨納豆燒酒
2月5日0點(diǎn),蝦米音樂(lè)終將迎來(lái)最后的謝幕。
一個(gè)月前,蝦米的關(guān)停公告猝不及防成為2021年第一個(gè)流淚時(shí)刻。
“讓我愛(ài)你,然后把我拋棄?”一位蝦米忠實(shí)用戶在微博寫(xiě)下《殘酷月光》歌詞,甚是應(yīng)景。更多的用戶蜂擁而至,在互聯(lián)網(wǎng)大型心碎現(xiàn)場(chǎng)評(píng)論留言,將話題送上熱搜。
作為互聯(lián)網(wǎng)早期音樂(lè)平臺(tái),蝦米音樂(lè)曾是在線音樂(lè)平臺(tái)的典范,承載了數(shù)千萬(wàn)網(wǎng)友的音樂(lè)記憶,以下我們將以一年一個(gè)關(guān)鍵詞的形式,回顧蝦米音樂(lè)波瀾壯闊的一生,但愿蝦米的故事,也能對(duì)你有所啟發(fā)。
2008年11月,蝦米網(wǎng)正式上線。
往前倒推5個(gè)月,同年6月,待字閨中的蝦米已經(jīng)拿下深創(chuàng)投A輪融資,幾乎是含著“金湯匙”出生。
彼時(shí),正趕上在線音樂(lè)創(chuàng)業(yè)熱潮。酷我音樂(lè)、酷狗音樂(lè)、新浪樂(lè)庫(kù)、巨鯨網(wǎng)勢(shì)頭初盛,QQ音樂(lè)在QQ渠道的加持下快速擴(kuò)張,早期巨頭千千靜聽(tīng)則加入百度MP3麾下。
當(dāng)幾乎所有播放器都在以“免費(fèi)”為噱頭圈地跑馬時(shí),蝦米卻選擇了一種混合了“P2P、電子購(gòu)物、虛擬貨幣、社區(qū)”的模式入局,把音樂(lè)與互聯(lián)網(wǎng)更深度融合起來(lái),引來(lái)投資人的青眼有加。
這與蝦米音樂(lè)創(chuàng)始人的風(fēng)格息息相關(guān)。蝦米音樂(lè)的1號(hào)員工王皓,是個(gè)不折不扣的樂(lè)迷,如今你能想到他的種種都是音樂(lè)相關(guān)的,都與音樂(lè)扯上關(guān)系。
網(wǎng)名“南瓜”來(lái)源于心儀的搖滾樂(lè)隊(duì)Smashing Pumpkins,大學(xué)組過(guò)一支名叫“黑水”的樂(lè)隊(duì),里面的吉他手朱七,后來(lái)也成為蝦米的創(chuàng)始人之一;開(kāi)過(guò)賣(mài)樂(lè)器的網(wǎng)站;給本地音樂(lè)人辦過(guò)一個(gè)類(lèi)似豆瓣同城的論壇——“聲音網(wǎng)”,在當(dāng)時(shí)杭州的文教區(qū)乃至搖滾圈都小有名氣,很多外地樂(lè)隊(duì)來(lái)杭演出,都是王皓給牽線搭橋的,而他也發(fā)現(xiàn),比起搞音樂(lè)自己更擅長(zhǎng)把人組合起來(lái)做事。
學(xué)生時(shí)代,他的存在恰好連接起了這座城市的音樂(lè)人和樂(lè)迷,這與幾年后他所創(chuàng)辦的蝦米音樂(lè),異曲同工。
但他同時(shí)也是個(gè)如假包換的工科男,對(duì)互聯(lián)網(wǎng)技術(shù)很感興趣。互聯(lián)網(wǎng)和音樂(lè)的化學(xué)反應(yīng),是他窮其一生探究的話題。
2003年,關(guān)掉網(wǎng)站的王皓加入阿里做一個(gè)普通的IT男。三年后,他拉上地產(chǎn)公司策劃朱七,和在阿里的前同事王小瑋、陳恩衛(wèi)、吳軼群,在杭州的一家小咖啡屋里相聚,重新點(diǎn)燃音樂(lè)夢(mèng)。
在他們的規(guī)劃中,蝦米音樂(lè)原名EMUMO(EARN MUSIC&MONEY),大概意思是既要讓大眾收獲音樂(lè),也要讓音樂(lè)人賺到錢(qián)。
蝦米網(wǎng)站的簡(jiǎn)介是這樣寫(xiě)的:
“音樂(lè)讓他感動(dòng)的在于,上千場(chǎng)的演出中真正賺錢(qián)的很少,但是這些清苦的歌者們?nèi)匀槐3种鴮?duì)音樂(lè)宗教式的信仰和追求。對(duì)于歌者,這仿佛并不是一個(gè)好的時(shí)代。”
如何用音樂(lè)體面地賺錢(qián)?這是蝦米初生時(shí)就希望解決的問(wèn)題,沒(méi)想到的是,12年后,蝦米依然無(wú)法回答。
蝦米音樂(lè)最為人津津樂(lè)道的,就是它對(duì)音樂(lè)流派近乎變態(tài)的分類(lèi)。很多文青的音樂(lè)啟蒙,都是從蝦米這里開(kāi)始的。
而蝦米在內(nèi)容上也確實(shí)下了一番苦功夫。在大家都忙著從各處找更多的曲庫(kù)來(lái)吸引用戶的時(shí)候,蝦米最關(guān)心的,是如何完善、優(yōu)化已有的曲庫(kù)。于是,蝦米音樂(lè)做了三件事:
第一,在網(wǎng)站運(yùn)營(yíng)中強(qiáng)化內(nèi)容編輯制度,以唱片公司的思路來(lái)做在線音樂(lè)。盡可能完善網(wǎng)站中三四百個(gè)音樂(lè)分支流派的介紹;在多人演唱的歌曲中,必須顯示每一個(gè)歌手名,而非簡(jiǎn)單使用“群星”代替;音樂(lè)品質(zhì)必須保證320K;歌曲的排列必須按照專(zhuān)輯順序排列……死磕細(xì)節(jié)的背后,是主創(chuàng)團(tuán)隊(duì)對(duì)音樂(lè)的理想主義。
第二,重視小眾長(zhǎng)尾音樂(lè)流派運(yùn)營(yíng)。據(jù)時(shí)任運(yùn)營(yíng)經(jīng)理的王小瑋介紹,在蝦米剛有10萬(wàn)用戶時(shí),就已經(jīng)有了6位語(yǔ)種編輯,同時(shí),網(wǎng)站也支持包括中、英、日、韓、俄、泰、西班牙等語(yǔ)言的檢索。
第三,廣泛發(fā)動(dòng)UGC的力量。借鑒百科詞條的編輯模式,蝦米招募300多個(gè)來(lái)自世界各地的資深音樂(lè)愛(ài)好者,鼓勵(lì)他們編輯、修改、上傳音樂(lè)資料和內(nèi)容。樂(lè)迷們滿懷熱情“為愛(ài)發(fā)電”,不僅為后續(xù)運(yùn)營(yíng)打下了良好的基礎(chǔ),更給平臺(tái)帶來(lái)彌足珍貴的社區(qū)氛圍。
風(fēng)格多元的音樂(lè)曲庫(kù)、全面專(zhuān)業(yè)的流派分類(lèi),讓每個(gè)聽(tīng)眾都像是走進(jìn)了一家精心維護(hù)的音樂(lè)圖書(shū)館。而這樣的口碑效應(yīng)也在樂(lè)迷群中不斷發(fā)酵,越來(lái)越多的音樂(lè)愛(ài)好者涌入其中。
另一個(gè)有利條件是,蝦米音樂(lè)初長(zhǎng)成的日子,也恰好是中國(guó)在線音樂(lè)的快速發(fā)展期。2008年發(fā)布的《第21次中國(guó)互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r調(diào)查統(tǒng)計(jì)報(bào)告》顯示,網(wǎng)絡(luò)音樂(lè)是當(dāng)時(shí)中國(guó)網(wǎng)民使用率最高的網(wǎng)絡(luò)應(yīng)用,半年內(nèi)86.6%的網(wǎng)民收聽(tīng)過(guò)網(wǎng)絡(luò)音樂(lè),下載比例為71.2%。這一比例在后來(lái)幾年中一直居高不下,網(wǎng)絡(luò)音樂(lè)穩(wěn)坐頭把交椅。
順勢(shì)而為,有內(nèi)容、有技術(shù)、有熱愛(ài),從某種程度來(lái)說(shuō),蝦米音樂(lè)是占據(jù)了天時(shí)地利人和的。時(shí)間走過(guò)2009年,蝦米音樂(lè)就像烏托邦般承載著音樂(lè)愛(ài)好者的理想,一切都在向著最好的方向發(fā)展,除了商業(yè)化還有沒(méi)更多進(jìn)展之外。
經(jīng)歷最初幾年的野蠻生長(zhǎng),在線音樂(lè)混亂不清的版權(quán)問(wèn)題終于被擺上了臺(tái)面。
2009年8月,文化部印發(fā)《文化部關(guān)于加強(qiáng)和改進(jìn)網(wǎng)絡(luò)音樂(lè)內(nèi)容審查工作的通知》,加強(qiáng)網(wǎng)絡(luò)音樂(lè)內(nèi)容管理,打擊盜版行為,拉響整頓序曲。受此影響,百度開(kāi)始收斂MP3業(yè)務(wù),蝦米音樂(lè)也沒(méi)逃過(guò)這一劫。
在王皓的設(shè)想中,蝦米音樂(lè)的定位類(lèi)似于“音樂(lè)中轉(zhuǎn)交易站”,即用戶先上傳音樂(lè),網(wǎng)站通過(guò)篩選后將優(yōu)質(zhì)音樂(lè)再售賣(mài)給用戶,當(dāng)音樂(lè)人、唱片公司找上門(mén)來(lái)時(shí)再付版權(quán)費(fèi),你可以理解為是“音樂(lè)版淘寶”。
但這種“先上車(chē)后補(bǔ)票”的行為,過(guò)于前衛(wèi)且風(fēng)險(xiǎn)巨大,用戶上傳的內(nèi)容既然是未經(jīng)授權(quán)的,又何來(lái)收費(fèi)的道理,確實(shí)惹惱了不少音樂(lè)人。
2010年9月,李志、周云蓬聯(lián)合張佺、張瑋瑋、郭龍、小河、鐘立風(fēng)、萬(wàn)曉利、左小祖咒等數(shù)十位音樂(lè)人發(fā)布聯(lián)名公告,控訴蝦米音樂(lè)侵權(quán)上架獨(dú)立音樂(lè)人作品的行為。這份公告,至今還留在周云蓬的豆瓣主頁(yè)上。而隨后一段時(shí)間里,這些音樂(lè)人的作品都在蝦米上消失不見(jiàn)。
版權(quán)問(wèn)題的突然出現(xiàn),給了創(chuàng)始團(tuán)隊(duì)更多資金方面的壓力。
數(shù)據(jù)顯示,2003-2013年間,國(guó)內(nèi)所有和音樂(lè)相關(guān)的互聯(lián)網(wǎng)企業(yè)從投資人那里獲得的投資只有5000萬(wàn)美元。很多風(fēng)投一聽(tīng)是搞音樂(lè)的,直接就讓前臺(tái)送客。在后來(lái)的采訪中,王皓回憶當(dāng)時(shí)有80%的時(shí)間是在找錢(qián)的,甚至幾乎患上了抑郁癥。
不過(guò)蝦米還是相對(duì)幸運(yùn)的。
在2008年A輪后,2010年又先后拿到了深創(chuàng)投和盛大網(wǎng)絡(luò)數(shù)百萬(wàn)的B輪和B+輪投資,這才讓它有了些許和版權(quán)方談判喘息的機(jī)會(huì)。
但蝦米靠的不是用戶量,相反它的用戶數(shù)甚至還有點(diǎn)少(2011年500萬(wàn),對(duì)比同被阿里收購(gòu)的天天動(dòng)聽(tīng)2012年用戶量已經(jīng)破億),更大程度上來(lái)源于蝦米團(tuán)隊(duì)單純對(duì)音樂(lè)的熱愛(ài)。
當(dāng)幾百萬(wàn)個(gè)口味不同的用戶都出現(xiàn)一個(gè)平臺(tái)上,怎樣才能讓他們自得其所共生發(fā)展呢?蝦米的回答是:音樂(lè)的個(gè)性化推薦。
2010年7月,蝦米發(fā)布基于html5技術(shù)的電臺(tái)服務(wù)xiami.fm,后續(xù)還推出桌面版等,這是對(duì)標(biāo)豆瓣FM的拳頭產(chǎn)品。
對(duì)于音樂(lè)推薦功能的實(shí)現(xiàn),蝦米不計(jì)成本全力推進(jìn)。公司百余名員工中,有一大半都在做著算法分類(lèi)工作。員工回憶稱(chēng),王皓當(dāng)時(shí)下了道“死命令”,要求后臺(tái)對(duì)每個(gè)用戶的音樂(lè)標(biāo)簽數(shù)量達(dá)到30多項(xiàng),極度消耗計(jì)算成本和服務(wù)器容量,而同期的豆瓣FM僅記錄4-5項(xiàng)。
同時(shí),蝦米的推薦算法中也更強(qiáng)調(diào)小眾、長(zhǎng)尾音樂(lè)所帶來(lái)的驚喜感。比起90%都熟悉的流行音樂(lè),蝦米更愿意推薦剩下不為人知的10%。
2011年,蝦米音樂(lè)的推薦系統(tǒng)基本做成。獨(dú)特的個(gè)性化算法,讓蝦米用戶在找到適合自己音樂(lè)的同時(shí)又無(wú)須擔(dān)心“信息繭房”,反倒越聽(tīng)越發(fā)現(xiàn)新世界的大門(mén)。數(shù)據(jù)顯示,獨(dú)立音樂(lè)人在蝦米曲庫(kù)被收聽(tīng)的比例高達(dá)11%。從這種意義上來(lái)說(shuō),蝦米音樂(lè)確實(shí)做到了當(dāng)時(shí)音樂(lè)推薦的天花板。
如此做了幾年,到2012年時(shí)蝦米的內(nèi)容質(zhì)量、算法技術(shù)和用戶數(shù)量都上來(lái)了,但賺錢(qián)這件事,卻一直沒(méi)走通。在第三輪融資失敗后,蝦米音樂(lè)陷入財(cái)務(wù)危機(jī)。
虎嗅曾將蝦米的模式歸為“iTunes Store + Bit Torrent + last.fm + Spotify”,這個(gè)模式看似大而全,實(shí)則多為空中樓閣。
做iTunes Store,蝦米缺曲庫(kù)、缺硬件;與Bit Torrent相比,蝦米的模式實(shí)際上是P2P,但對(duì)品質(zhì)的追求又拖了蝦米的后退,在音樂(lè)數(shù)量上遠(yuǎn)不如酷狗豐富;蝦米電臺(tái)和UGC精選集倒是與last.fm和Spotify有些接近,但做好推薦的基礎(chǔ)是足夠的版權(quán),而買(mǎi)版權(quán)又繞不開(kāi)錢(qián)的問(wèn)題。
拋開(kāi)前期融資,蝦米的盈利方式主要靠用戶付費(fèi)下載。2012年5月,蝦米音樂(lè)的付費(fèi)率為5‰。按500萬(wàn)用戶計(jì)算,5‰僅為2.5萬(wàn)人,若以付費(fèi)用戶每人下載10首歌計(jì)算(蝦米下載價(jià)格為0.8元/首),那么蝦米的收入為20萬(wàn),這還不算版權(quán)分成、運(yùn)營(yíng)費(fèi)用等成本問(wèn)題。如此相較,實(shí)在是杯水車(chē)薪。
事實(shí)上,蝦米每年在版權(quán)上的花費(fèi)遠(yuǎn)超于其收入的十倍還不止,但用戶體驗(yàn)上卻感知不到。2012年初,知乎網(wǎng)友提問(wèn)“為什么蝦米網(wǎng)的搜索體驗(yàn)?zāi)敲床睢保巡坏酵趿甑母瑁躔?duì)此的回復(fù)頗為無(wú)奈,“這不是搜索體驗(yàn)差,是王力宏新專(zhuān)輯都下架鳥(niǎo)”。
與此同時(shí),從新浪音樂(lè)走出來(lái)的謝國(guó)民剛成立海洋音樂(lè),就一口氣簽下了包括環(huán)球、華納、索尼三大唱片在內(nèi)的百余家唱片公司的獨(dú)家版權(quán)代理。
王皓隱約意識(shí)到,在線音樂(lè)已經(jīng)變成一個(gè)玩不起的巨頭游戲,如果想要繼續(xù)前進(jìn),蝦米只能去找更強(qiáng)大的盟友,畢竟,“跟大一些的平臺(tái)在一起,會(huì)安全一些”。
2012年前后,蝦米與BAT幾家巨頭陸續(xù)接觸,兜兜轉(zhuǎn)轉(zhuǎn),最終選擇尚無(wú)音樂(lè)業(yè)務(wù)的阿里。
2013年1月,阿里宣布以8000萬(wàn)價(jià)格收購(gòu)蝦米,隨即被劃入音樂(lè)事業(yè)部。龐大的阿里帝國(guó),為小蝦米帶來(lái)資金、流量、技術(shù)和管理支持,王皓肩上的壓力小了不少。
在接受媒體采訪時(shí),王皓甚至表示“賺錢(qián)不是我的目標(biāo)”,對(duì)蝦米盈利沒(méi)有預(yù)期,更著眼于和淘寶業(yè)務(wù)融合,以及對(duì)產(chǎn)業(yè)的改造。王皓的底氣,來(lái)源于他和馬云對(duì)彼此音樂(lè)價(jià)值觀的認(rèn)同,他們都希望去改變音樂(lè)產(chǎn)業(yè)鏈。
既然如此,并入后的首要任務(wù)就是加快對(duì)音樂(lè)行業(yè)的改造。
2013年7月,蝦米推出音樂(lè)人平臺(tái)。獨(dú)立音樂(lè)人和獨(dú)立唱片公司可以在平臺(tái)上發(fā)布正版音樂(lè)、自主定價(jià),同時(shí),平臺(tái)還為音樂(lè)人提供各類(lèi)運(yùn)營(yíng)支持、數(shù)據(jù)分析工具和結(jié)算系統(tǒng)。上線后的前兩年,平臺(tái)將為音樂(lè)人提供免費(fèi)服務(wù),音樂(lè)人能獲得100%的下載收益。
如果說(shuō)此前蝦米只是聚攏了音樂(lè)內(nèi)容和樂(lè)迷,那么音樂(lè)人平臺(tái)的上線才算是真正補(bǔ)足了蝦米的音樂(lè)生態(tài)。從此,即使蝦米的存量版權(quán)受掣肘,音樂(lè)人平臺(tái)也能承擔(dān)起版權(quán)的自我造血功能,而蝦米音樂(lè)骨血里也刻下了“獨(dú)立音樂(lè)”的基因,成為當(dāng)時(shí)國(guó)內(nèi)獨(dú)立音樂(lè)人的聚集地。
產(chǎn)品層面,蝦米也同時(shí)發(fā)力。蝦米音樂(lè)與淘寶賬號(hào)體系全面打通,淘寶中開(kāi)設(shè)專(zhuān)門(mén)的音樂(lè)頻道,“音樂(lè)淘寶”計(jì)劃穩(wěn)步推進(jìn)。
2013年12月,蝦米APP3.0發(fā)布,算法主導(dǎo)的“猜你喜歡”功能提升到首頁(yè)顯著位置,進(jìn)一步凸顯個(gè)性化推薦功能,開(kāi)啟真·“千人千面”時(shí)代。
同年,蝦米音樂(lè)用戶數(shù)大幅提升,突破2000萬(wàn)大關(guān)。
趁勢(shì)跟進(jìn),2014年7月,蝦米在音樂(lè)人平臺(tái)一周年之際推出針對(duì)音樂(lè)人的成長(zhǎng)計(jì)劃——“尋光計(jì)劃”,并同步發(fā)布國(guó)內(nèi)第一張互聯(lián)網(wǎng)唱片《尋光集》。
你很難定義這張專(zhuān)輯的音樂(lè)風(fēng)格,但可以肯定的是,這張從策劃、制作到發(fā)行、推廣都來(lái)自互聯(lián)網(wǎng)的專(zhuān)輯,不僅重塑了傳統(tǒng)唱片公司宣發(fā)方式,也是中國(guó)獨(dú)立音樂(lè)逐漸崛起路上的一塊里程碑。
《尋光集》中的音樂(lè)人,李榮浩、痛仰樂(lè)隊(duì)、旅行團(tuán)、逃跑計(jì)劃、莫西子詩(shī)、金玟岐、聲音玩具、邱比、卡奇社……如今很多都是華語(yǔ)樂(lè)壇的中流砥柱。
而這還只是開(kāi)始。
到2015年,蝦米還推出西樓、程璧、鯨魚(yú)馬戲團(tuán)等13位音樂(lè)新人,幫助他們完成發(fā)專(zhuān)輯的夢(mèng)想,后來(lái)在線音樂(lè)平臺(tái)對(duì)音樂(lè)人的扶持熱潮,最早也可追溯至此。
高歌猛進(jìn)的蝦米音樂(lè),在版權(quán)上也不甘示弱。
那年夏天,蝦米音樂(lè)一鼓作氣拿下《中國(guó)好聲音》第三季、《中國(guó)好歌曲》第二季音樂(lè)版權(quán),并與節(jié)目幕后制作團(tuán)隊(duì)上海燦星達(dá)成戰(zhàn)略合作,探索音樂(lè)C2B模式。
年底,蝦米APP發(fā)布4.0版本,推出省流量模式和24小時(shí)音樂(lè)收聽(tīng)情景模式,前者解決了不少人流量“囊中羞澀”的問(wèn)題,后者模式中出現(xiàn)開(kāi)車(chē)神曲、刷題歌單等如今我們熟知的情景歌單,破解了用戶找歌難的窘境。這個(gè)版本一戰(zhàn)封神,至今仍有用戶在尋找這個(gè)版本的安裝包。
格調(diào)有了,版權(quán)上了,產(chǎn)品也好用,解決了用戶的三大痛點(diǎn),蝦米DAU在2014年猛增至七八百萬(wàn),一下子漲了百倍。從小眾走向破圈的路上,蝦米音樂(lè)迎來(lái)“高光時(shí)刻”,成為鄙視鏈頂端的APP。
2015年前后,是在線音樂(lè)行業(yè)極為混亂的時(shí)刻。音樂(lè)平臺(tái)、唱片公司、綜藝節(jié)目版權(quán)方之間因版權(quán)問(wèn)題撕扯不斷,史稱(chēng)“第一次版權(quán)大戰(zhàn)”。直到2015年7月版權(quán)局發(fā)布“最嚴(yán)版權(quán)令”,大戰(zhàn)才告一段落。
好在蝦米有了阿里的加持,籌碼充足。
坊間傳聞,蝦米以“十幾億資金”先后攬下滾石、華研、相信、寰亞等華語(yǔ)經(jīng)典音樂(lè)和擁有250萬(wàn)曲庫(kù)的BMG的版權(quán),還與環(huán)球、華納、索尼三大唱片公司達(dá)成合作,甚至一度接近簽下杰威爾版權(quán)(周杰倫),次年,蝦米又以投資入股形式拿下SM韓語(yǔ)版權(quán),其中華研、SM分別是從騰訊、百度身邊“虎口奪食”,相當(dāng)強(qiáng)勢(shì)。
一時(shí)間,蝦米音樂(lè)和天天動(dòng)聽(tīng)手握超60%中文音樂(lè)獨(dú)家版權(quán),獨(dú)攬李宗盛、五月天、S.H.E、林宥嘉等大批港臺(tái)藝人版權(quán),在正版化進(jìn)程中屬于很高的起點(diǎn)了。
騰訊也沒(méi)閑著,開(kāi)年即在朋友圈封殺蝦米和天天動(dòng)聽(tīng)的分享鏈接,廝殺意味漸濃。
另一側(cè),阿里對(duì)音樂(lè)業(yè)務(wù)給予的厚望也增加了。
2015年3月,蝦米音樂(lè)和天天動(dòng)聽(tīng)共同組建阿里音樂(lè),蝦米音樂(lè)走專(zhuān)業(yè)音樂(lè)人的小而美路線,天天動(dòng)聽(tīng)負(fù)責(zé)大眾用戶,兩者并行差異化運(yùn)行。整合完成后,預(yù)計(jì)阿里音樂(lè)的市場(chǎng)占有率將達(dá)到15%左右,僅次于海洋音樂(lè)和QQ音樂(lè)。
2015年7月,阿里音樂(lè)集團(tuán)正式成立,高曉松任董事長(zhǎng),宋柯任CEO。高曉松許下諾言,“阿里音樂(lè)集團(tuán)一定會(huì)成為一家世界級(jí)音樂(lè)機(jī)構(gòu)”,內(nèi)部員工情緒為之一振。
此刻的蝦米,風(fēng)光無(wú)二。
2016年的開(kāi)局卻給了蝦米當(dāng)頭一棒。
1月,陪伴蝦米八年之久的創(chuàng)始人王皓突然宣布轉(zhuǎn)崗釘釘,他在朋友圈里灰心喪氣,
“我投身這個(gè)行業(yè)已經(jīng)八年了,初衷是想讓這個(gè)行業(yè)跟上時(shí)代,但是現(xiàn)在行業(yè)現(xiàn)狀已經(jīng)荒誕到令人發(fā)指。有些行業(yè)注定要死去,我干脆等他涅槃好了。”
掌舵人的易主,意味著蝦米音樂(lè)新時(shí)代的開(kāi)啟。而此時(shí)高曉松、宋柯的重點(diǎn),則全然放在天天動(dòng)聽(tīng)的改造上,
蝦米由盛而衰,至此拉開(kāi)帷幕。
5月,阿里音樂(lè)舉行發(fā)布會(huì),請(qǐng)來(lái)半個(gè)娛樂(lè)圈站臺(tái),高調(diào)宣布天天動(dòng)聽(tīng)正式改名為“阿里星球”,主攻泛娛樂(lè)方向。
改版后的阿里星球?qū)⒁魳?lè)產(chǎn)業(yè)與電商模式結(jié)合,APP集音樂(lè)播放、粉絲社交、視頻直播、交易體系于一體,滿足從聽(tīng)眾、音樂(lè)人、詞曲作者、經(jīng)紀(jì)公司、演出機(jī)構(gòu)等各方面的需求。
初衷是好的,但步子太大,用戶和行業(yè)都沒(méi)準(zhǔn)備好。阿里星球的用戶數(shù)從巔峰時(shí)期的3億狂跌至2000萬(wàn),次年3月就結(jié)束了短暫的一生。
蝦米音樂(lè)雖然沒(méi)走彎路,但這一年,它的發(fā)展是停滯的。那段時(shí)間關(guān)于蝦米的新聞,除了成為阿里大文娛板塊的成員外,只能聽(tīng)到時(shí)不時(shí)版權(quán)下架,和產(chǎn)品越來(lái)越臃腫的吐槽。
而被浪費(fèi)的2016年,正是友商奮發(fā)圖強(qiáng)之際。當(dāng)年騰訊集團(tuán)(QQ音樂(lè))完成與海洋音樂(lè)(酷狗、酷我音樂(lè))的整合,成立TME集團(tuán),并開(kāi)啟“買(mǎi)買(mǎi)買(mǎi)”模式囤積大量版權(quán),而原本弱小的網(wǎng)易云音樂(lè),也憑借“音樂(lè)+社區(qū)”的模式,異軍突起。
阿里星球的停更,加速了高、宋等人離場(chǎng),也在陡然間將阿里音樂(lè)的重?fù)?dān)全部交到了蝦米音樂(lè)的手上。
2016年10月,王皓從釘釘被召回到蝦米。創(chuàng)始人的回歸像一顆定心丸,給整個(gè)團(tuán)隊(duì)帶來(lái)了希望。
2017年4月,中斷3年的“尋光計(jì)劃第二季”重新啟動(dòng),王皓親自為其站臺(tái),分享做音樂(lè)的初心。
差不多同時(shí),環(huán)球唱片的三年一簽的版權(quán)爭(zhēng)奪戰(zhàn)打響,蝦米和騰訊、網(wǎng)易、百度一起加入爭(zhēng)搶。雖然最后還是騰訊以令人咋舌的高價(jià)勝出,但蝦米音樂(lè)進(jìn)攻的氣勢(shì),回來(lái)了。
“收回失地”的進(jìn)展不止于此。
9月12日,蝦米音樂(lè)與騰訊音樂(lè)達(dá)成版權(quán)互授協(xié)議,蝦米音樂(lè)重新迎來(lái)索尼、華納、杰威爾、英皇、時(shí)代峰峻、YG、JYP等音樂(lè)版權(quán)。版權(quán)外患解決了。
9月13日,時(shí)任阿里音樂(lè)CEO的張宇(語(yǔ)嫣)發(fā)出了阿里音樂(lè)成立28個(gè)月以來(lái)的首封“內(nèi)部信”,信中提到阿里音樂(lè)未來(lái)的三大方向,一是稱(chēng)將秉持“富養(yǎng)女兒”的實(shí)業(yè)心態(tài),加大獲取優(yōu)質(zhì)版權(quán)作品的投入力度,廣積糧、不筑墻;二是加碼扶持獨(dú)立音樂(lè)人;三是在蝦米音樂(lè)方面提高投入。內(nèi)部支援充足了。
11月,喜迎雙十一,馬云邀請(qǐng)王菲一起合唱微電影《功守道》主題曲《風(fēng)清揚(yáng)》,更為阿里大文娛板塊注入了一劑“強(qiáng)心劑”。當(dāng)時(shí),《功守道》電影只能在優(yōu)酷看,《風(fēng)清揚(yáng)》歌只能在蝦米聽(tīng),帶動(dòng)蝦米的DAU一度從700萬(wàn)飆升到900萬(wàn),整個(gè)大文娛板塊的熱情都被點(diǎn)燃了。
可是,音樂(lè)APP的轉(zhuǎn)換涉及到大量本地音樂(lè)、歌單乃至使用習(xí)慣的“遷徙”,成本過(guò)高,不到萬(wàn)不得已,用戶都不大愿意更換APP。
更何況,一直走小眾精品專(zhuān)業(yè)路線的蝦米音樂(lè),個(gè)性過(guò)于鮮明,無(wú)論在用戶數(shù)還是產(chǎn)品氣質(zhì),它都很難在短時(shí)間內(nèi)完成大眾化,代替從前天天動(dòng)聽(tīng)的位置。
好景不長(zhǎng),2018年初,蝦米音樂(lè)原有的相信音樂(lè)、華研音樂(lè)分別易主至騰訊音樂(lè)和網(wǎng)易云音樂(lè)。雖然通過(guò)版權(quán)互授,這些歌曲在蝦米上都還能聽(tīng)到,但阿里對(duì)蝦米的耐心,顯然已經(jīng)不多了。
集團(tuán)內(nèi)部,對(duì)蝦米的發(fā)展策略一直舉棋不定,外化表現(xiàn)即頻繁的高層變動(dòng)。
二度回歸的王皓再次離開(kāi),這一次,他遠(yuǎn)去東南亞,走得決絕。
不久,擔(dān)任阿里音樂(lè)的CEO語(yǔ)嫣也被調(diào)離,空留下赴任時(shí)帶來(lái)淘寶團(tuán)隊(duì)。他們中的大多數(shù)人都帶著鮮明的電商思維,每個(gè)用戶行為數(shù)據(jù)指標(biāo)都門(mén)兒清,唯獨(dú)少了點(diǎn)對(duì)音樂(lè)的熱愛(ài)與敬畏。拉新人分優(yōu)惠券的電商小游戲開(kāi)始出現(xiàn)在蝦米APP中,叫人摸不著頭腦,蝦米開(kāi)始變得有點(diǎn)失控。
外部環(huán)境中,版權(quán)的大規(guī)模缺失成為壓垮蝦米的最后一根稻草。
2018年9月,阿里音樂(lè)與騰訊音樂(lè)轉(zhuǎn)授合作到期后再未續(xù)約,蝦米音樂(lè)被爆出大規(guī)模下架索尼、華納、周杰倫曲庫(kù),用戶哀嚎聲一片。知乎“為什么蝦米音樂(lè)逐漸走向沒(méi)落”問(wèn)題下,滿屏都是對(duì)其版權(quán)少的控訴。
同年,時(shí)常與蝦米音樂(lè)并稱(chēng)“三國(guó)殺”的騰訊音樂(lè)和網(wǎng)易云音樂(lè),卻越走越快形成兩強(qiáng)態(tài)勢(shì),分流大量蝦米音樂(lè)“難民”,徹底改變了在線音樂(lè)的格局。
騰訊音樂(lè)圍繞“聽(tīng)看唱玩”搭建泛娛樂(lè)生態(tài),逐漸形成QQ音樂(lè)專(zhuān)注音樂(lè),酷狗酷我主打直播,全民K歌關(guān)注社交的全方位發(fā)展模式,并延伸至文學(xué)、影視、長(zhǎng)音頻領(lǐng)域,最終在2018年12月赴美上市,估值240億美金,成為全球首個(gè)實(shí)現(xiàn)盈利的在線音樂(lè)平臺(tái)。
網(wǎng)易云音樂(lè)則專(zhuān)注音樂(lè)垂類(lèi),一方面,在版權(quán)采買(mǎi)、音樂(lè)人培養(yǎng)方面大舉發(fā)力;另一方面推出LOOK直播、音街等泛音樂(lè)產(chǎn)品,豐富音樂(lè)生態(tài)。2018年10月,網(wǎng)易云音樂(lè)獲得由百度、泛大西洋投資集團(tuán)、博裕資本等新一輪融資。
逆水行舟,不進(jìn)則退,蝦米的衰頹無(wú)可挽回。Questmobile《中國(guó)移動(dòng)互聯(lián)網(wǎng)在線音樂(lè)行業(yè)報(bào)告》顯示,2018年7月,騰訊音樂(lè)和網(wǎng)易云音樂(lè)的MAU都在億級(jí)陣營(yíng),而蝦米音樂(lè)則僅有2277萬(wàn),位列第五,已然跌出第一梯隊(duì)。
2018年11月,蝦米音樂(lè)發(fā)布十周年生日紀(jì)念微博,轉(zhuǎn)發(fā)評(píng)論不過(guò)二三十個(gè),相較于它超過(guò)500萬(wàn)的粉絲數(shù)來(lái)說(shuō),實(shí)在是太過(guò)寂寥。
2019年6月,蝦米音樂(lè)第N次面臨架構(gòu)調(diào)整。
這一次它從大文娛板塊進(jìn)入了新設(shè)立的創(chuàng)新業(yè)務(wù)事業(yè)群,同時(shí)加入的還有UC、阿里文學(xué)、天貓精靈等不怎么待見(jiàn)的業(yè)務(wù),主帥又從楊偉東換成了朱順炎。隨之而來(lái)的還有一波大裁員,僅留下少數(shù)技術(shù)運(yùn)營(yíng)維持APP日常運(yùn)營(yíng)。這也被認(rèn)為是阿里高層終于決定邊緣化蝦米的標(biāo)志之一。
隨后,行業(yè)里隔三差五傳出“蝦米音樂(lè)與網(wǎng)易云音樂(lè)合并”、“網(wǎng)易云音樂(lè)收購(gòu)蝦米”,雖然相當(dāng)于再度賣(mài)身,但總還曾給蝦米留有一線活下去的希望。然而,當(dāng)9月阿里和云鋒基金向網(wǎng)易云音樂(lè)投資約7億美元的交易新聞落地時(shí),蝦米音樂(lè)的“棄子”身份幾乎已成定局。
對(duì)用戶來(lái)說(shuō),這種感覺(jué)或許來(lái)的更早也更明顯一些。
2019年5月,蝦米突然下架包括陳奕迅、Taylor Swift等人在內(nèi)環(huán)球音樂(lè)的版權(quán),這也就意味著蝦米全面放棄了占據(jù)全球曲庫(kù)近90%的三大唱片版權(quán)。
主流版權(quán)不再續(xù)約,獨(dú)立音樂(lè)人也已經(jīng)遷徙到網(wǎng)易、騰訊等平臺(tái),此刻的蝦米空有優(yōu)秀的算法,但卻“無(wú)歌可聽(tīng)”。
當(dāng)一個(gè)在線音樂(lè)平臺(tái)在版權(quán)上繳械投降之際,也就像被判了“死刑緩期執(zhí)行”一樣,只能眼睜睜看著用戶流失而毫無(wú)辦法,畢竟一個(gè)音樂(lè)APP的基礎(chǔ)功能還是聽(tīng)歌。
2020年蝦米的故事與上一年相差無(wú)幾,只是在下坡路上的慣性下滑。
根據(jù)Trustdata報(bào)告,6月,蝦米音樂(lè)MAU同比下降接近100%,甚至低于酷我音樂(lè)HD版。12月,易觀千帆報(bào)告顯示,蝦米音樂(lè)MAU跌破千萬(wàn),僅為928.8萬(wàn)。
8 月,阿里的88VIP在音樂(lè)服務(wù)中為用戶提供蝦米音樂(lè)和網(wǎng)易云音樂(lè)二選一的機(jī)會(huì),這是阿里系以外的產(chǎn)品第一次進(jìn)入88VIP體系。
11月,微博認(rèn)證為“NOVA娛樂(lè)主理人,前華納音樂(lè)/環(huán)球音樂(lè)中國(guó)區(qū)市場(chǎng)總監(jiān)”網(wǎng)友“@相征”發(fā)博稱(chēng):
“江湖傳聞,蝦米音樂(lè)明年1月份關(guān)閉,一個(gè)時(shí)代要結(jié)束了嗎?”
緊接著,果殼旗下賬號(hào)“@果殼放大燈”發(fā)微博稱(chēng):
“蝦米音樂(lè)有關(guān)高管目前在北京開(kāi)會(huì),回去要執(zhí)行一些人員變動(dòng)。蝦米音樂(lè)很可能將要解散。”
對(duì)此,蝦米音樂(lè)回應(yīng)“不予置評(píng)”。不予置評(píng)是公關(guān)回應(yīng)中的常見(jiàn)話術(shù),就是既不否定也不肯定對(duì)方所說(shuō)的任何觀點(diǎn),用大白話說(shuō)就是不方便告訴你。鑒于互聯(lián)網(wǎng)極高的辟謠率,不帶辟謠性質(zhì)的回復(fù)大概率可當(dāng)作默認(rèn)。
果然,2021年1月5日,蝦米音樂(lè)關(guān)停消息終于公布。
也許是心里早有準(zhǔn)備,聽(tīng)到這個(gè)消息時(shí),只覺(jué)得長(zhǎng)長(zhǎng)舒了一口氣,一個(gè)時(shí)代,結(jié)束了。
蝦米音樂(lè)這一生,完整經(jīng)歷了中國(guó)數(shù)字音樂(lè)從PC時(shí)代向互聯(lián)網(wǎng)時(shí)代演進(jìn)的全過(guò)程。
它生于在線音樂(lè)創(chuàng)業(yè)熱潮,也差點(diǎn)死在資本寒潮中;一度是大公司里炙手可熱的明星產(chǎn)品,也經(jīng)歷過(guò)產(chǎn)品邊緣化的痛苦;曾站上行業(yè)鄙視鏈的頂端,也默默承受過(guò)無(wú)人問(wèn)津的艱難歲月。
時(shí)至今日,你很難說(shuō)是誰(shuí)殺死了蝦米。
是王皓嗎?他在蝦米身上傾注了10多年的心血,如果沒(méi)有他對(duì)音樂(lè)的熱愛(ài)和虔誠(chéng),蝦米就不可能有精細(xì)到極致的流派分類(lèi)和推薦系統(tǒng),也不可能形成蝦米別具一格的氣質(zhì)。但提出以盜版模式付費(fèi)的是他,負(fù)氣離開(kāi)的也是他。
是阿里嗎?在蝦米瀕死的2012年,是阿里伸出援手,給了資金、技術(shù)、流量、還有大把的試錯(cuò)時(shí)間。但也是因?yàn)榘⒗镌跊Q策和用人上的屢次失誤,讓蝦米錯(cuò)失了版權(quán)大戰(zhàn)后最佳發(fā)展窗口期。
是版權(quán)嗎?音樂(lè)正版化之路道阻且長(zhǎng),蝦米曾是其中最堅(jiān)定的信仰者。但也是因?yàn)楦骷移脚_(tái)哄抬過(guò)高的版權(quán)價(jià)格和畸形的獨(dú)家版權(quán)模式,讓蝦米的頹勢(shì)無(wú)可挽回。
是行業(yè)嗎?相比十幾年前,付費(fèi)習(xí)慣養(yǎng)成了,獨(dú)立音樂(lè)人起來(lái)了,有音樂(lè)審美的聽(tīng)眾也變多了,整個(gè)音樂(lè)行業(yè)的發(fā)展大方向是積極的。但互聯(lián)網(wǎng)真的能改造音樂(lè)行業(yè)嗎?現(xiàn)如今,除了騰訊音樂(lè)以社交娛樂(lè)方式“曲線救國(guó)”實(shí)現(xiàn)盈利外,其他還沒(méi)有一家在線音樂(lè)平臺(tái)真正能通過(guò)音樂(lè)賺到錢(qián)。
是用戶嗎?將蝦米音樂(lè)捧到頂端的是他們,哭著喊著舍不得蝦米音樂(lè)關(guān)停的是他們,但因?yàn)榍鷰?kù)而自顧自放棄了一些堅(jiān)守的也是他們。
在錯(cuò)誤的時(shí)間里,由錯(cuò)誤的人作出許多錯(cuò)誤的決定,從某種意義上來(lái)說(shuō),蝦米音樂(lè)的無(wú)可挽回,從一開(kāi)始就是注定了的。
把時(shí)間往前推到12年前,創(chuàng)始團(tuán)隊(duì)在考慮蝦米音樂(lè)叫什么的時(shí)候,有人提到了一個(gè)強(qiáng)大的競(jìng)爭(zhēng)對(duì)手巨鯨網(wǎng)。這是當(dāng)時(shí)中國(guó)第一家主打正版音樂(lè)付費(fèi)下載的音樂(lè)平臺(tái),曾獲得谷歌和姚明的投資。因此,團(tuán)隊(duì)最終決定把EMUMO改名叫蝦米網(wǎng),是希望有朝一日,小蝦米也能干掉巨鯨。
結(jié)果,蝦米確實(shí)活得比巨鯨更久一些,但成為巨鯨的夢(mèng)想,始終是不可能了的。
參考資料:
晚點(diǎn)LastPost:《蝦米音樂(lè)關(guān)停:一百萬(wàn)懷念它的人和錯(cuò)失音樂(lè)帝國(guó)的阿里》
老曹:《蝦米網(wǎng)CEO王皓:我和音樂(lè)的波瀾萬(wàn)丈十五年》
虎嗅:《蝦米為什么要賣(mài)給阿里?》
摩登天空Z(yǔ)ERO:《蝦米創(chuàng)始人王皓:我覺(jué)得沒(méi)什么好懷念的》
Techweb:《蝦米網(wǎng)王皓:音樂(lè)商人的邏輯》
戲葡萄原創(chuàng)專(zhuān)稿,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載
2014年十月底的Cocos開(kāi)發(fā)者大會(huì)上,觸控副總裁王哲做了一次演講,《重新定義下的Cocos》。
當(dāng)時(shí)他這樣說(shuō)到,“沒(méi)有-X和JS框架的區(qū)別,沒(méi)有2D和3D的區(qū)別,它們就在一個(gè)引擎里,Cocos集成了所有這些服務(wù),重新定義了無(wú)縫的工作流。美術(shù)和設(shè)計(jì)人員不需要配置很復(fù)雜的工作目錄,不需要配置Android NDK、SDK之類(lèi)的東西,當(dāng)設(shè)計(jì)完場(chǎng)景動(dòng)畫(huà)和UI之后可以直接開(kāi)發(fā)工作,開(kāi)發(fā)工作只是由程序員來(lái)完成的。”
那么,2014年這一年,Cocos業(yè)務(wù)特別是CocosPlay取得了哪些成績(jī)?Cocos部門(mén)對(duì)HTML5等新方向如何看待?葡萄君最近在觸控廈門(mén)分公司與王哲聊到了這些話題。
葡萄君:對(duì)于觸控,CocosPlay的意義在于?
王哲:CocosPlay目前是給觸控代理的幾款游戲使用,先讓自家游戲用好了,再考慮面向別家以及商業(yè)化。自己先趟坑,這是觸控開(kāi)發(fā)工具類(lèi)產(chǎn)品一貫的做法。CocosPlay是一個(gè)在用戶體驗(yàn)上跟HTML5接近的系統(tǒng),但沒(méi)有HTML5那么高的移植和性能要求,不需要重寫(xiě)程序內(nèi)容。Cocos Play技術(shù)可以對(duì)Native游戲簡(jiǎn)單改造之后,實(shí)現(xiàn)兩個(gè)要點(diǎn):免安裝,和邊玩邊下載,也就是以前PC頁(yè)游的運(yùn)行模式。
王哲:PC互聯(lián)網(wǎng)是以網(wǎng)站為基礎(chǔ)建立服務(wù)鏈的,現(xiàn)在移動(dòng)互聯(lián)網(wǎng)App之間不能連通,于是需要SDK的接入。對(duì)于大量app產(chǎn)生的移動(dòng)互聯(lián)網(wǎng)流量,如內(nèi)涵段子、冷笑話精選、美圖、酷狗音樂(lè)等,流量很大,但這些流量的變現(xiàn)效率肯定不如游戲。這些站點(diǎn)對(duì)用戶來(lái)說(shuō)吸引力很大,因?yàn)橛煤艿偷某杀揪湍軗Q取更多的資源,而他們從前的變現(xiàn)手段主要是靠賣(mài)廣告位CPA,或者通過(guò)游戲聯(lián)運(yùn),但既要聯(lián)運(yùn)又得和CP談、嵌SDK,非常浪費(fèi)成本。所以現(xiàn)在我們希望通過(guò)CocosPlay做的大聯(lián)運(yùn),來(lái)讓長(zhǎng)尾流量通過(guò)觸控擅長(zhǎng)的游戲領(lǐng)域提高效率和收入。
王哲:對(duì)于手機(jī)游戲,流量來(lái)源已經(jīng)是一個(gè)瓶頸問(wèn)題。國(guó)內(nèi)流量來(lái)源最重要的是渠道給的推薦位,這些位置是有限的。所以在看到這些非游戲app產(chǎn)生的長(zhǎng)尾流量的商機(jī)后,我們希望能把握這一點(diǎn),進(jìn)而給游戲廠商和高流量app帶來(lái)額外的利潤(rùn)。現(xiàn)在Coco splay還只有觸控代理的游戲在用,觸控要評(píng)估這個(gè)市場(chǎng)的潛力,在摸清市場(chǎng)以后才會(huì)開(kāi)放。Coco splay目前有3、4款游戲在使用,但技術(shù)上沒(méi)有做到完全的自動(dòng)化,因?yàn)樯婕暗綄?duì)操作系統(tǒng)接口很復(fù)雜的封裝,所以比較麻煩。
葡萄君:怎么看待HTML5游戲?
王哲:Cocos已經(jīng)有技術(shù)可以用JavaScript做大型游戲游戲,也有很多研發(fā)商在用。比如Facebook游戲收入前列的《Big Fish Casino》就是用cocos 2d-html5寫(xiě)的。國(guó)內(nèi)高收入的代表作則有DeNA的《變形金剛》、邊鋒的《三國(guó)殺傳奇》、心動(dòng)游戲上到微信的《仙俠道》、途游的一系列棋牌游戲等,采用cocos 2d-html5開(kāi)發(fā)后,通過(guò)我們的JavaScript 綁定加速方案打包到native app,發(fā)行到安卓和iOS渠道。
王哲:我一向是比較保守謹(jǐn)慎的風(fēng)格,所以提供出來(lái)的技術(shù)方案都是讓客戶可進(jìn)可退的。從Cocos 2d-x在2010年的設(shè)計(jì),就是進(jìn)可攻Android退可守iOS的方案,要知道當(dāng)時(shí)Android還非常小。而Cocos 2d-js就是進(jìn)可攻HTML5退可守Native,我沒(méi)有賭性,認(rèn)為不把公司命運(yùn)賭在唯一的方向上,這點(diǎn)非常重要。而對(duì)于只打算純守Native的公司,我們還提供了Cocos Play方案可以轉(zhuǎn)化為手機(jī)頁(yè)游形態(tài)。我喜歡Cocos 2d-js這種可進(jìn)可退,左右逢源的技術(shù)方案。
王哲:就目前而言,我遇到很多研發(fā)商的需求是,用Cocos 2d-js開(kāi)發(fā)完游戲后,用我們引擎的native runtime加速方案打包為原生形態(tài)到渠道上分發(fā),同時(shí)用HTML5 runtime做關(guān)卡試玩來(lái)導(dǎo)量。HTML5一大優(yōu)點(diǎn)的是能在朋友圈里病毒傳播,點(diǎn)開(kāi)就玩。Cocos 2d-js很好地滿足了這種既要原生性能來(lái)做大游戲,又要利用HTML5做病毒式傳播導(dǎo)量的當(dāng)下需求。市面上也有其他HTML5引擎,但cocos引擎的成熟程度和生態(tài)圈發(fā)展程度大家都明白,手Q玩吧里面的HTML5游戲,有50%直接用DOM開(kāi)發(fā),有20%~30%是用Cocos 2d-html5開(kāi)發(fā)的,是玩吧里市場(chǎng)占有率最高的游戲引擎。但HTML5領(lǐng)域最終能發(fā)展到怎么樣不是我e們引擎提供商和中小CP說(shuō)了算的,還得看大廠的態(tài)度,尤其是谷歌和蘋(píng)果的態(tài)度。所以目前謹(jǐn)慎的態(tài)度還是先用Cocos 2d-js跨native和html5兩端,先走這一步,再看HTML5市場(chǎng)會(huì)不會(huì)有爆發(fā)。
王哲:再進(jìn)一步,HTML5只是技術(shù)手段,手段只是為了實(shí)現(xiàn)背后的商業(yè)目標(biāo);而對(duì)于實(shí)現(xiàn)同個(gè)商業(yè)目標(biāo),可以有不同的技術(shù)手段。對(duì)于游戲廠商而言,HTML5技術(shù)背后的商業(yè)目標(biāo)就是:如何在手機(jī)上像頁(yè)游一樣來(lái)源廣泛且方便地導(dǎo)量,如何托管于社交軟件中實(shí)現(xiàn)病毒式傳播。如前面所說(shuō),現(xiàn)在非游戲app的流量很高,但缺乏高效變現(xiàn)手段;普遍采用的廣告模式導(dǎo)量,玩家在看到廣告到進(jìn)游戲開(kāi)玩的時(shí)間長(zhǎng),流量轉(zhuǎn)化率低下。縮短這個(gè)等待時(shí)間,提高轉(zhuǎn)化率是手機(jī)頁(yè)游關(guān)鍵的問(wèn)題和價(jià)值所在。比如一個(gè)100MB的游戲,下載10MB就能進(jìn)游戲,最好是秒進(jìn),然后一邊玩一邊下載后續(xù)內(nèi)容,而且不要彈界面出來(lái)問(wèn)用戶是否安裝,是否授予一堆訪問(wèn)權(quán)限等等。在實(shí)現(xiàn)這個(gè)商業(yè)目標(biāo)上,觸控的Cocos Play技術(shù)和HTML5都是手段而已。兩者都不是針對(duì)玩家需求而制作的東西,它是滿足游戲廠商運(yùn)營(yíng)、盈利的需求的技術(shù)手段,比如發(fā)行、CP在商業(yè)上對(duì)分發(fā)效率、玩家進(jìn)入游戲的時(shí)間、玩家的留存率、轉(zhuǎn)化率的問(wèn)題;而玩家只關(guān)心能否在手機(jī)上方便地玩到好玩、高質(zhì)量的游戲,并不關(guān)心你游戲背后用的是哪種技術(shù)。
葡萄君:那么Coco splay的效果如何?
王哲:國(guó)慶的時(shí)候做了《秦時(shí)明月》的Coco splay版,放到渠道里發(fā)現(xiàn)反饋的數(shù)據(jù)都比較好,包括轉(zhuǎn)化率和收入水平等。投放的渠道比所有的安卓渠道整體水平要高一些。由于不知道用戶的反饋會(huì)往那個(gè)方向走,所以我們做的初始版本會(huì)相對(duì)簡(jiǎn)陋,在不斷測(cè)試?yán)锶フ{(diào)試。當(dāng)時(shí)《秦時(shí)明月》上91的時(shí)候還是試玩版,沒(méi)有代支付等系統(tǒng),將100多M的游戲改到10m,放上去以后,收入數(shù)據(jù)很快就上去了。
葡萄君:玩家會(huì)不會(huì)覺(jué)得包太小了?
王哲:玩家會(huì)有疑問(wèn),但還是眼見(jiàn)為實(shí),玩一玩才知道。關(guān)鍵是以下幾個(gè):1)節(jié)約首次下載時(shí)間,10MB下載wifi環(huán)境2分鐘,4G環(huán)境以秒計(jì);而100MB wifi下載10多分鐘,那么前兩分鐘過(guò)后,玩家就可以提前體驗(yàn)游戲,如果覺(jué)得不好玩就可以不下剩下90m的流量。2)網(wǎng)絡(luò)環(huán)境的變化會(huì)導(dǎo)致下載中斷,但10MB的包之后剩下90MB可以分次下載。
葡萄君:現(xiàn)在CocosPlay希望先解決哪些需求?
王哲:一是完善自動(dòng)化轉(zhuǎn)換工具,接入提升效率。但改造單款游戲的投入成本大,制作時(shí)間長(zhǎng),CP需要消耗過(guò)多資源。第二是收入目標(biāo),暫定目標(biāo)是增收上千萬(wàn)的流水,比如《秦時(shí)明月》原本能達(dá)到5000萬(wàn)單月,使用Coco splay以后能提高20%,達(dá)到6000萬(wàn),那么就KO了,因?yàn)槭謾C(jī)上的HTML5游戲還沒(méi)單月過(guò)100萬(wàn)的。
葡萄君:Cocos這一年取得了哪些成績(jī),2015年又有哪些打算?
王哲:國(guó)內(nèi)的收入排行榜前十前二十,用Cocos研發(fā)的游戲占有率很高。韓國(guó)日本也有很多,比如海賊王、SE亞瑟王系列、怪物彈珠等。
王哲:2014年Cocos的成績(jī)還分三方面。一是cocos 3D推出,我們?nèi)ツ暝?D技術(shù)方面的進(jìn)步比較大,是從無(wú)到有的過(guò)程,2D還將占據(jù)市場(chǎng)一段時(shí)間,尤其是歐美和日本市場(chǎng);但3D不得不準(zhǔn)備,未來(lái)手機(jī)市場(chǎng)可能像PC平臺(tái)一樣分化為:核心手游3D化端游化、2D游戲休閑化、社交化,退守手機(jī)頁(yè)游戲形態(tài)。第二是理清了Studio工作流,終于解決了多個(gè)編輯器分立的問(wèn)題,同時(shí)windows和mac兩個(gè)版本的代碼也合到了一起。從前盡管有同一個(gè)入口,但仍然是一堆功能分立的細(xì)碎編輯器。那樣分開(kāi)的工作既不方便管理,也影響工作效率。而今年實(shí)現(xiàn)了整體的統(tǒng)一,后面的迭代工作會(huì)快很多,很多改進(jìn)的基礎(chǔ)功能也幫大家提高效率。第三是Code IDE解決了蘋(píng)果和谷歌眼中二等公民Lua和JavaScript腳本調(diào)試的問(wèn)題。
王哲:展望新的一年,首先第一點(diǎn)是我們希望cocos系列產(chǎn)品之間能相互打通,可以在各產(chǎn)品各編輯器和擴(kuò)展里面自由的調(diào)用相互的資源,實(shí)現(xiàn)更好的一體化集成開(kāi)發(fā)環(huán)境。而進(jìn)一步就是插件和擴(kuò)展系統(tǒng),讓研發(fā)商自由加入自己的擴(kuò)展控件,如自己的UI控件等。第二點(diǎn)就是3D,我們發(fā)布3D功能后到現(xiàn)在也過(guò)了10個(gè)月左右,在去年新立項(xiàng)的cocos 3D游戲會(huì)在今年陸續(xù)上線。我很期待也衷心祝愿cocos游戲,不論是2D還是3D游戲,都能在今年大賣(mài),雄踞暢銷(xiāo)榜榜首。?
雖然說(shuō)XPath比正則表達(dá)式用起來(lái)方便,但是沒(méi)有最方便,只有更方便。我們的BeautifulSoup庫(kù)就能做到更方便的爬取想要的東西。
使用之前,還是老規(guī)矩,先安裝BeautifulSoup庫(kù),指令如下:
pip install beautifulsoup4
其中文開(kāi)發(fā)文檔:
https://www.crummy.com/software/BeautifulSoup/bs4/doc/index.zh.html
BeautifulSoup庫(kù)是一個(gè)強(qiáng)大的Python語(yǔ)言的XML和HTML解析庫(kù)。它提供了一些簡(jiǎn)單的函數(shù)來(lái)處理導(dǎo)航、搜索、修改分析樹(shù)等功能。
BeautifulSoup庫(kù)還能自動(dòng)將輸入的文檔轉(zhuǎn)換為Unicode編碼,輸出文檔轉(zhuǎn)換為UTF-8編碼。
所以,在使用BeautifulSoup庫(kù)的過(guò)程中,不需要開(kāi)發(fā)中考慮編碼的問(wèn)題,除非你解析的文檔,本身就沒(méi)有指定編碼方式,這才需要開(kāi)發(fā)中進(jìn)行編碼處理。
下面,我們來(lái)詳細(xì)介紹BeautifulSoup庫(kù)的使用規(guī)則。
下面,我們來(lái)詳細(xì)介紹BeautifulSoup庫(kù)的重點(diǎn)知識(shí)。
首先,BeautifulSoup庫(kù)中一個(gè)重要的概念就是選擇解釋器。因?yàn)槠涞讓右蕾?lài)的全是這些解釋器,我們有必要認(rèn)識(shí)一下。博主專(zhuān)門(mén)列出了一個(gè)表格:
解釋器 | 使用方式 | 優(yōu)點(diǎn) | 缺點(diǎn) |
Python標(biāo)準(zhǔn)庫(kù) | BeautifulSoup(code,'html.parser') | Python的內(nèi)置標(biāo)準(zhǔn)庫(kù),執(zhí)行速度適中,容錯(cuò)能力強(qiáng) | Python2.7.3以及Python3.2.2之前的版本容錯(cuò)能力差 |
lxml HTML解析器 | BeautifulSoup(code,'lxml') | 解析速度快,容錯(cuò)能力強(qiáng) | 需要安裝C語(yǔ)言庫(kù) |
lxml XML解析器 | BeautifulSoup(code,'xml') | 解析速度快,唯一支持XML的解析器 | 需要安裝C語(yǔ)言庫(kù) |
html5lib | BeautifulSoup(code,'html5lib') | 最好的容錯(cuò)性,以瀏覽器的方式解析文檔,生成HTML5格式的文檔 | 解析速度慢 |
從上面表格觀察,我們一般爬蟲(chóng)使用lxml HTML解析器即可,不僅速度快,而且兼容性強(qiáng)大,只是需要安裝C語(yǔ)言庫(kù)這一個(gè)缺點(diǎn)(不能叫缺點(diǎn),應(yīng)該叫麻煩)。
要使用BeautifulSoup庫(kù),需要和其他庫(kù)一樣進(jìn)行導(dǎo)入,但你雖然安裝的是beautifulsoup4,但導(dǎo)入的名稱(chēng)并不是beautifulsoup4,而是bs4。用法如下:
from bs4 import BeautifulSoup
soup = BeautifulSoup('<h1>Hello World</h1>', 'lxml')
print(soup.h1.string)
運(yùn)行之后,輸出文本如下:
基礎(chǔ)的用法很簡(jiǎn)單,這里不在贅述。從現(xiàn)在開(kāi)始,我們來(lái)詳細(xì)學(xué)習(xí)BeautifulSoup庫(kù)的所有重要知識(shí)點(diǎn),第一個(gè)就是節(jié)點(diǎn)選擇器。
所謂節(jié)點(diǎn)選擇器,就是直接通過(guò)節(jié)點(diǎn)的名稱(chēng)選擇節(jié)點(diǎn),然后再用string屬性就可以得到節(jié)點(diǎn)內(nèi)的文本,這種方式獲取最快。
比如,基礎(chǔ)用法中,我們使用h1直接獲取了h1節(jié)點(diǎn),然后通過(guò)h1.string即可得到它的文本。但這種用法有一個(gè)明顯的缺點(diǎn),就是層次復(fù)雜不適合。
所以,我們?cè)谑褂霉?jié)點(diǎn)選擇器之前,需要將文檔縮小。比如一個(gè)文檔很多很大,但我們獲取的內(nèi)容只在id為blog的div中,那么我們先獲取這個(gè)div,再在div內(nèi)部使用節(jié)點(diǎn)選擇器就非常合適了。
HTML示例代碼:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="utf-8">
<title>我是一個(gè)測(cè)試頁(yè)面</title>
</head>
<body>
<ul class="ul">
<li class="li1"><a href="https://liyuanjinglyj.blog.csdn.net/">我的主頁(yè)</a></li>
<li class="li2"><a href="https://www.csdn.net/">CSDN首頁(yè)</a></li>
<li class="li3"><a href="https://www.csdn.net/nav/python" class="aaa">Python板塊</a></li>
</ul>
</body>
</html>
下面的一些示例,我們還是使用這個(gè)HTML代碼進(jìn)行節(jié)點(diǎn)選擇器的講解。
這里,我們先來(lái)教會(huì)大家如何獲取節(jié)點(diǎn)的名稱(chēng)屬性以及內(nèi)容,示例如下:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html, 'lxml')
# 獲取節(jié)點(diǎn)的名稱(chēng)
print(soup.title.name)
# 獲取節(jié)點(diǎn)的屬性
print(soup.meta.attrs)
print(soup.meta.attrs['charset'])
# 獲取節(jié)點(diǎn)的內(nèi)容(如果文檔有多個(gè)相同屬性,默認(rèn)獲取第一個(gè))
print(soup.a.string)
# 也可以一層一層的套下去
print(soup.body.ul.li.a.string)
運(yùn)行之后,效果如下:
這里的注釋代碼都很詳細(xì),就不在贅述。
一般來(lái)說(shuō)一個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)有可能很多,通過(guò)上面的方式獲取,只能得到第一個(gè)。如果要獲取一個(gè)標(biāo)簽的所有子節(jié)點(diǎn),這里有2種方式。先來(lái)看代碼:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html, 'lxml')
# 獲取直接子節(jié)點(diǎn)
print("獲取直接子節(jié)點(diǎn)")
contents = soup.head.contents
print(contents)
for content in contents:
print(content)
children = soup.head.children
print(children)
for child in children:
print(child)
運(yùn)行之后,效果如下:
如上面代碼所示,我們有2種方式獲取所有子節(jié)點(diǎn),一種是通過(guò)contents屬性,一種是通過(guò)children屬性,2者遍歷的結(jié)果都是一樣的。
但需要特別注意,這里獲取所有子節(jié)點(diǎn),它是把換行符一起算進(jìn)去了,所以你會(huì)看到控制臺(tái)輸出了很多空行。所以,在實(shí)際的爬蟲(chóng)中,遍歷之時(shí)一定要?jiǎng)h除這些空行。
既然能獲取直接子節(jié)點(diǎn),那么獲取所有子孫節(jié)點(diǎn)也是肯定可以的。BeautifulSoup庫(kù)給我們提供了descendants屬性獲取子孫節(jié)點(diǎn),示例如下:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html, 'lxml')
# 獲取ul的所有子孫節(jié)點(diǎn)
print('獲取ul的所有子孫節(jié)點(diǎn)')
lis = soup.body.ul.descendants
print(lis)
for li in lis:
print(li)
運(yùn)行之后,效果如下:
同樣的,descendants獲取子孫節(jié)點(diǎn)也算入了換行符。而且需要特別注意的是,descendants屬性把文本內(nèi)容本身也算作子孫節(jié)點(diǎn)。
同樣的,在實(shí)際的爬蟲(chóng)程序中,我們有時(shí)候也需要通過(guò)逆向查找父節(jié)點(diǎn),或者查找兄弟節(jié)點(diǎn)。
BeautifulSoup庫(kù),給我們提供了parent屬性獲取父節(jié)點(diǎn),同時(shí)提供了next_sibling屬性獲取當(dāng)前節(jié)點(diǎn)的下一個(gè)兄弟節(jié)點(diǎn),previous_sibling屬性獲取上一個(gè)兄弟節(jié)點(diǎn)。
示例代碼如下:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html, 'lxml')
# 獲取第一個(gè)a標(biāo)簽的父親節(jié)點(diǎn)的class屬性
print(soup.a.parent['class'])
li1 = soup.li
li3 = li1.next_sibling.next_sibling.next_sibling.next_sibling
li2 = li3.previous_sibling.previous_sibling
print(li1)
print(li2)
print(li3)
for sibling in li3.previous_siblings:
print(sibling)
運(yùn)行之后,效果如下:
前面已經(jīng)提示了,節(jié)點(diǎn)選擇器是把換行符‘\n’也算一個(gè)節(jié)點(diǎn),所以第一個(gè)li需要通過(guò)兩個(gè)next_sibling才能獲取到下一個(gè)li節(jié)點(diǎn)。同樣的,上一個(gè)也是。其實(shí)還有一個(gè)更簡(jiǎn)單的方法,能避免這些換行符被統(tǒng)計(jì)在內(nèi),那就是在獲取網(wǎng)頁(yè)源代碼的時(shí)候,直接去掉換行與空格即可。
對(duì)于節(jié)點(diǎn)選擇器,博主已經(jīng)介紹了相對(duì)于文本內(nèi)容較少的完全可以這么做。但實(shí)際的爬蟲(chóng)爬的網(wǎng)址都是大量的數(shù)據(jù),開(kāi)始使用節(jié)點(diǎn)選擇器就不合適了。所以,我們要考慮通過(guò)方法選擇器進(jìn)行先一步的處理。
find_all()方法主要用于根據(jù)節(jié)點(diǎn)的名稱(chēng)、屬性、文本內(nèi)容等選擇所有符合要求的節(jié)點(diǎn)。其完整的定義如下所示:
def find_all(self, name=None, attrs={}, recursive=True, text=None,
limit=None, **kwargs):
參數(shù) | 意義 |
name | 指定節(jié)點(diǎn)名稱(chēng) |
attrs | 指定屬性名稱(chēng)與值,比如查找value="text"的節(jié)點(diǎn),attrs={"value":"text"} |
recursive | 布爾類(lèi)型,值True查找子孫節(jié)點(diǎn),值False直接子節(jié)點(diǎn),默認(rèn)為T(mén)rue |
text | 指定需要查找的文本 |
limit | 因?yàn)閒ind_all返回的是一個(gè)列表,所以可長(zhǎng)可短,而limit與數(shù)據(jù)庫(kù)語(yǔ)法類(lèi)似,限制獲取的數(shù)量。不設(shè)置返回所有 |
【實(shí)戰(zhàn)】還是測(cè)試上面的HTML,我們獲取name=a,attr={"class":"aaa"},并且文本等于text="Python板塊"板塊的節(jié)點(diǎn)。
示例代碼如下所示:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html.strip(), 'lxml')
a_list = soup.find_all(name='a', attrs={"class": 'aaa'}, text='Python板塊')
for a in a_list:
print(a)
運(yùn)行之后,效果如下所示:
find()與find_all()僅差一個(gè)all,但結(jié)果卻有2點(diǎn)不同:
1.find()只查找符合條件的第一個(gè)節(jié)點(diǎn),而find_all()是查找符合條件的所有節(jié)點(diǎn)2.find()方法返回的是bs4.element.Tag對(duì)象,而find_all()返回的是bs4.element.ResultSet對(duì)象
下面,我們來(lái)查找上面HTML中的a標(biāo)簽,看看返回結(jié)果有何不同,示例如下:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html.strip(), 'lxml')
a_list = soup.find_all(name='a')
print("find_all()方法")
for a in a_list:
print(a)
print("find()方法")
a = soup.find(name='a')
print(a)
運(yùn)行之后,效果如下:
首先,我們來(lái)了解一下CSS選擇器的規(guī)則:
1..classname:選取樣式名為classname的節(jié)點(diǎn),也就是class屬性值是classname的節(jié)點(diǎn)2.#idname:選取id屬性為idname的節(jié)點(diǎn)3.nodename:選取節(jié)點(diǎn)名為nodename的節(jié)點(diǎn)
一般來(lái)說(shuō),在BeautifulSoup庫(kù)中,我們使用函數(shù)select()進(jìn)行CSS選擇器的操作。示例如下:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html.strip(), 'lxml')
li = soup.select('.li1')
print(li)
這里,我們選擇class等于li1的節(jié)點(diǎn)。運(yùn)行之后,效果如下:
因?yàn)椋覀冃枰獙?shí)現(xiàn)嵌套CSS選擇器的用法,但上面的HTML不合適。這里,我們略作修改,僅僅更改<ul>標(biāo)簽內(nèi)的代碼。
<ul class="ul">
<li class="li"><a href="https://liyuanjinglyj.blog.csdn.net/">我的主頁(yè)</a></li>
<li class="li"><a href="https://www.csdn.net/">CSDN首頁(yè)</a></li>
<li class="li"><a href="https://www.csdn.net/nav/python" class="aaa">Python板塊</a>
</ul>
我們僅僅刪除了li后面的數(shù)字,現(xiàn)在我們可以實(shí)現(xiàn)一個(gè)嵌套選擇節(jié)點(diǎn)的效果了。示例代碼如下所示:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html.strip(), 'lxml')
ul = soup.select('.ul')
for tag in ul:
a_list = tag.select('a')
for a in a_list:
print(a)
運(yùn)行之后,效果如下:
我們?cè)俅螌⑸厦娴拇a改造一下,因?yàn)樯厦娅@取的標(biāo)簽,現(xiàn)在我們來(lái)獲取其中的文本以及href屬性的值,示例如下:
from bs4 import BeautifulSoup
with open('demo.html', 'r', encoding='utf-8') as f:
html = f.read()
soup = BeautifulSoup(html.strip(), 'lxml')
ul = soup.select('.ul')
for tag in ul:
a_list = tag.select('a')
for a in a_list:
print(a['href'], a.get_text())
運(yùn)行之后,效果如下:
可以看到,我們通過(guò)['屬性名']進(jìn)行屬性值的獲取,通過(guò)get_text()獲取文本。
與XPath類(lèi)似,我們可以直接通過(guò)F12瀏覽器進(jìn)行Copy任何節(jié)點(diǎn)的CSS選擇器代碼。具體操作如下圖所示:
copy之后,直接將上面復(fù)制的內(nèi)容粘貼到select()方法中即可使用。
上面基本上是BeautifulSoup庫(kù)的全部用法,既然我們已經(jīng)學(xué)習(xí)掌握了,不抓緊爬點(diǎn)什么,總感覺(jué)自己很虧,所以我們選擇酷狗飆升榜榜單進(jìn)行爬取。
如上圖所示,我們的榜單信息全在id="rankWrap"的div標(biāo)簽下的ul之中。所以,首先我們必須獲取ul。示例代碼如下:
from bs4 import BeautifulSoup
import requests
url = "https://www.kugou.com/yy/html/rank.html"
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
result = requests.get(url=url, headers=headers)
print(result.text)
soup = BeautifulSoup(result.text.strip(), 'lxml')
ul = soup.select('#rankWrap > div.pc_temp_songlist.pc_rank_songlist_short > ul')
print(tbody)
獲取ul之后,我們就可以在獲取其中的所有l(wèi)i節(jié)點(diǎn)信息,然后分解li的標(biāo)簽,獲取重要的歌曲作者,歌曲名稱(chēng)等。不過(guò),我們先來(lái)分析網(wǎng)頁(yè)li內(nèi)部代碼:
可以看到,我們要的歌曲名稱(chēng)與作者就在li的title屬性中,而歌曲的網(wǎng)頁(yè)鏈接在li下,第4個(gè)span的標(biāo)簽下的a節(jié)點(diǎn)的href屬性之中(也可以直接就是第一個(gè)a標(biāo)簽之中)。知道這些之后,我們可以完善代碼了。
from bs4 import BeautifulSoup
import requests
url = "https://www.kugou.com/yy/html/rank.html"
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36'
}
result = requests.get(url=url, headers=headers)
soup = BeautifulSoup(result.text.strip(), 'lxml')
ul = soup.select('#rankWrap > div.pc_temp_songlist.pc_rank_songlist_short > ul')
lis = ul[0].select('li')
for li in lis:
print("歌曲名稱(chēng)與歌曲作者:", li['title'])
print("歌曲鏈接:", li.find('a')['href'])
如上面代碼所示,我們只用了不到14行代碼,就可以爬取酷狗音樂(lè)的飆升榜單,BeautifulSoup庫(kù)是不是非常的強(qiáng)大呢?
*請(qǐng)認(rèn)真填寫(xiě)需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。