今天通過(guò)爬蟲(chóng)數(shù)據(jù)進(jìn)行分析,一起來(lái)看看網(wǎng)易嚴(yán)選商品評(píng)論的獲取和分析师溅。
聲明:這是一篇超級(jí)嚴(yán)肅的技術(shù)文章茅信,請(qǐng)本著學(xué)習(xí)交流的態(tài)度閱讀,謝謝墓臭!
蘸鲸!
網(wǎng)易商品評(píng)論爬取
分析網(wǎng)頁(yè)
評(píng)論分析
進(jìn)入到網(wǎng)易嚴(yán)選官網(wǎng),搜索“文胸”后起便,先隨便點(diǎn)進(jìn)一個(gè)商品棚贾。
在商品頁(yè)面,打開(kāi) Chrome 的控制臺(tái)榆综,切換至 Network 頁(yè)妙痹,再把商品頁(yè)面切換到評(píng)價(jià)標(biāo)簽下,選擇一個(gè)評(píng)論文字鼻疮,如“薄款怯伊、穿著舒適、滿意”判沟,在 Network 中搜索耿芹。
可以發(fā)現(xiàn)崭篡,評(píng)論文字是通過(guò) listByItemByTag.json 傳遞過(guò)來(lái)的,點(diǎn)擊進(jìn)入該請(qǐng)求吧秕,并拷貝出該請(qǐng)求的 URL:
https://you.163.com/xhr/comment/listByItemByTag.json?csrf_token=060f4782bf9fda38128cfaeafb661f8c&__timestamp=1571106038283&itemId=1616018&tag=%E5%85%A8%E9%83%A8&size=20&page=1&orderBy=0&oldItemTag=%E5%85%A8%E9%83%A8&oldItemOrderBy=0&tagChanged=0
將該 URL 放入 Postman 中琉闪,逐個(gè)嘗試 url query params,最后能夠發(fā)現(xiàn)砸彬,只需保留 itemId 和 page 兩個(gè)請(qǐng)求參數(shù)即可颠毙。
請(qǐng)求返回的是一個(gè) JSON 格式的數(shù)據(jù),下面就是分析該 JSON 數(shù)據(jù)了砂碉。
不難發(fā)現(xiàn)蛀蜜,所有的評(píng)論數(shù)據(jù)都存儲(chǔ)在 commentList 中,我們只需保存該數(shù)據(jù)即可增蹭。
下面就是如何獲取 itemId 的信息了滴某,這個(gè)是產(chǎn)品的 ID,我們回到網(wǎng)易嚴(yán)選首頁(yè)滋迈,繼續(xù)分析霎奢。
產(chǎn)品 ID 獲取
當(dāng)我們?cè)谒阉骺蛑休斎腙P(guān)鍵字進(jìn)行搜索的時(shí)候,同樣能夠發(fā)現(xiàn)在 Network 中有很多請(qǐng)求杀怠,此時(shí)可以觀察各個(gè)請(qǐng)求椰憋,通過(guò)請(qǐng)求文件的名稱(此處需要一些經(jīng)驗(yàn),守規(guī)矩的程序員都不會(huì)亂起名字)赔退,我們可以定位到搜索時(shí)展示搜索結(jié)果的請(qǐng)求橙依。
搜索一般都是 search,所以我們就鎖定了這個(gè) search.json 的請(qǐng)求硕旗。同樣把請(qǐng)求 URL 拷貝到 Postman 中窗骑,逐個(gè)驗(yàn)證傳參,最后保留 page 和 keyword 兩個(gè)參數(shù)即可。
該請(qǐng)求返回的數(shù)據(jù)較多,還是需要耐心的分析數(shù)據(jù)酒唉,也能夠發(fā)現(xiàn),在 result->data->directly->searcherResult->result 下面的 id 值软族,即為我們要獲取的產(chǎn)品 ID。
以上残制,我們基本完成了前期的分析工作立砸,下面開(kāi)始代碼的編寫(xiě)。
編寫(xiě)代碼
獲取產(chǎn)品 ID
defsearch_keyword(keyword):
uri?='https://you.163.com/xhr/search/search.json'
query?=?{
"keyword":?keyword,
"page":1
}
try:
res?=?requests.get(uri,?params=query).json()
result?=?res['data']['directly']['searcherResult']['result']
product_id?=?[]
forrinresult:
product_id.append(r['id'])
returnproduct_id
except:
raise
我這里是獲取了 page 為 1 的產(chǎn)品 ID初茶,下面就是通過(guò)產(chǎn)品 ID 來(lái)獲取不同產(chǎn)品下的評(píng)論信息颗祝。
通過(guò)前面的分析,我們可以知道,評(píng)論信息都是如下形式的螺戳,對(duì)這種形式的信息搁宾,我們可以很方便地存儲(chǔ)進(jìn)入 MongoDB,然后再慢慢分析數(shù)據(jù)里的內(nèi)容倔幼。
{
"skuInfo":?[
"顏色:膚色",
"杯碼:75B"
],
"frontUserName":"1****8",
"frontUserAvatar":"https://yanxuan.nosdn.127.net/f8f20a77db47b8c66c531c14c8b38ee7.jpg",
"content":"質(zhì)量好盖腿,穿著舒服",
"createTime":1555546727635,
"picList":?[
"https://yanxuan.nosdn.127.net/742f28186d805571e4b3f28faa412941.jpg"
],
"commentReplyVO":null,
"memberLevel":4,
"appendCommentVO":null,
"star":5,
"itemId":1680205
}
對(duì)于 MongoDB,我們既可以自己搭建凤藏,也可以使用網(wǎng)上免費(fèi)的服務(wù)奸忽。在這里我介紹一個(gè)免費(fèi)的 MongoDB 服務(wù)網(wǎng)站:mlab堕伪,使用很簡(jiǎn)單揖庄,就不過(guò)多介紹使用過(guò)程了。
數(shù)據(jù)庫(kù)有了欠雌,下面就是把數(shù)據(jù)保存進(jìn)去了蹄梢。
defdetails(product_id):
url?='https://you.163.com/xhr/comment/listByItemByTag.json'
try:
C_list?=?[]
foriinrange(1,100):
query?=?{
"itemId":?product_id,
"page":?i,
}
res?=?requests.get(url,?params=query).json()
ifnotres['data']['commentList']:
break
print("爬取第?%s 頁(yè)評(píng)論"%?i)
commentList?=?res['data']['commentList']
C_list.append(commentList)
time.sleep(1)
#?save?to?mongoDB
try:
mongo_collection.insert_many(commentList)
except:
continue
returnC_list
except:
raise
最后爬取完成之后,總共是七千多條數(shù)據(jù)富俄,下面就可以根據(jù)個(gè)人需要做一些分析了禁炒。
爬取的數(shù)據(jù) MongoDB 鏈接
conn = MongoClient("mongodb://%s:%s@ds149974.mlab.com:49974/you163" % ('you163', 'you163'))
db = conn.you163
mongo_collection = db.you163
商品評(píng)論數(shù)據(jù)分析
下面就到了激動(dòng)人心的時(shí)刻了,一探妹子偏好霍比!
偏好顏色
先來(lái)看看妹子們偏好的顏色
可以看出幕袱,黑色是遙遙領(lǐng)先的哦,這里你要做到心中有數(shù)悠瞬!
再通過(guò)餅狀圖來(lái)觀察下不同顏色的占比情況
尺寸分布
沒(méi)有問(wèn)題们豌,75B 就是大多數(shù)妹子的尺寸了
如果你對(duì)這種罩杯尺寸沒(méi)有研究的話,不要緊浅妆,貼心的我給你準(zhǔn)備了對(duì)照表望迎,拿走不謝
商品評(píng)論
最后我們?cè)賮?lái)看看妹子們對(duì)于商品的評(píng)價(jià)情況
就星級(jí)評(píng)價(jià)上來(lái)看,大多數(shù)都是五星好評(píng)凌外,畢竟打著“嚴(yán)選”的名號(hào)辩尊,質(zhì)量是必須有保證的。
再來(lái)看看在評(píng)論區(qū)康辑,妹子最喜歡用什么詞語(yǔ)來(lái)描述呢
舒服摄欲、很舒服,非常舒服疮薇;滿意胸墙、很滿意,非常滿意惦辛。