今天通過爬蟲數據進行分析,一起來看看網易嚴選商品評論的獲取和分析。 聲明:這是一篇超級嚴肅的技術文章,請本著學習交流的態度閱讀,謝謝! ! 網易商品評論爬取 分析網頁 評論分析 進入到網易嚴選官網,搜索“文胸”後,先隨便點進一個商品。 在商品頁面,打開 Chrome 的控制台,切換至 Net ...
今天通過爬蟲數據進行分析,一起來看看網易嚴選商品評論的獲取和分析。
聲明:這是一篇超級嚴肅的技術文章,請本著學習交流的態度閱讀,謝謝!
!
網易商品評論爬取
分析網頁
評論分析
進入到網易嚴選官網,搜索“文胸”後,先隨便點進一個商品。
在商品頁面,打開 Chrome 的控制台,切換至 Network 頁,再把商品頁面切換到評價標簽下,選擇一個評論文字,如“薄款、穿著舒適、滿意”,在 Network 中搜索。
可以發現,評論文字是通過 listByItemByTag.json 傳遞過來的,點擊進入該請求,並拷貝出該請求的 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 中,逐個嘗試 url query params,最後能夠發現,只需保留 itemId 和 page 兩個請求參數即可。
請求返回的是一個 JSON 格式的數據,下麵就是分析該 JSON 數據了。
不難發現,所有的評論數據都存儲在 commentList 中,我們只需保存該數據即可。
下麵就是如何獲取 itemId 的信息了,這個是產品的 ID,我們回到網易嚴選首頁,繼續分析。
產品 ID 獲取
當我們在搜索框中輸入關鍵字進行搜索的時候,同樣能夠發現在 Network 中有很多請求,此時可以觀察各個請求,通過請求文件的名稱(此處需要一些經驗,守規矩的程式員都不會亂起名字),我們可以定位到搜索時展示搜索結果的請求。
搜索一般都是 search,所以我們就鎖定了這個 search.json 的請求。同樣把請求 URL 拷貝到 Postman 中,逐個驗證傳參,最後保留 page 和 keyword 兩個參數即可。
該請求返回的數據較多,還是需要耐心的分析數據,也能夠發現,在 result->data->directly->searcherResult->result 下麵的 id 值,即為我們要獲取的產品 ID。
以上,我們基本完成了前期的分析工作,下麵開始代碼的編寫。
編寫代碼
獲取產品 ID
def search_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 = []
for r in result:
product_id.append(r['id'])
return product_id
except:
raise
我這裡是獲取了 page 為 1 的產品 ID,下麵就是通過產品 ID 來獲取不同產品下的評論信息。
通過前面的分析,我們可以知道,評論信息都是如下形式的,對這種形式的信息,我們可以很方便地存儲進入 MongoDB,然後再慢慢分析數據里的內容。
{
"skuInfo": [
"顏色:膚色",
"杯碼:75B"
],
"frontUserName": "1****8",
"frontUserAvatar": "https://yanxuan.nosdn.127.net/f8f20a77db47b8c66c531c14c8b38ee7.jpg",
"content": "質量好,穿著舒服",
"createTime": 1555546727635,
"picList": [
"https://yanxuan.nosdn.127.net/742f28186d805571e4b3f28faa412941.jpg"
],
"commentReplyVO": null,
"memberLevel": 4,
"appendCommentVO": null,
"star": 5,
"itemId": 1680205
}
對於 MongoDB,我們既可以自己搭建,也可以使用網上免費的服務。在這裡我介紹一個免費的 MongoDB 服務網站:mlab,使用很簡單,就不過多介紹使用過程了。
資料庫有了,下麵就是把數據保存進去了。
def details(product_id):
url = 'https://you.163.com/xhr/comment/listByItemByTag.json'
try:
C_list = []
for i in range(1, 100):
query = {
"itemId": product_id,
"page": i,
}
res = requests.get(url, params=query).json()
if not res['data']['commentList']:
break
print("爬取第 %s 頁評論" % i)
commentList = res['data']['commentList']
C_list.append(commentList)
time.sleep(1)
# save to mongoDB
try:
mongo_collection.insert_many(commentList)
except:
continue
return C_list
except:
raise
最後爬取完成之後,總共是七千多條數據,下麵就可以根據個人需要做一些分析了。
爬取的數據 MongoDB 鏈接
conn = MongoClient("mongodb://%s:%[email protected]:49974/you163" % ('you163', 'you163'))
db = conn.you163
mongo_collection = db.you163
商品評論數據分析
下麵就到了激動人心的時刻了,一探妹子偏好!
偏好顏色
先來看看妹子們偏好的顏色
可以看出,黑色是遙遙領先的哦,這裡你要做到心中有數!
再通過餅狀圖來觀察下不同顏色的占比情況
尺寸分佈
沒有問題,75B 就是大多數妹子的尺寸了
如果你對這種罩杯尺寸沒有研究的話,不要緊,貼心的我給你準備了對照表,拿走不謝
商品評論
最後我們再來看看妹子們對於商品的評價情況
就星級評價上來看,大多數都是五星好評,畢竟打著“嚴選”的名號,質量是必須有保證的。
再來看看在評論區,妹子最喜歡用什麼詞語來描述呢
舒服、很舒服,非常舒服;滿意、很滿意,非常滿意。