日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬取淘宝商品评论——2020-8月

發(fā)布時(shí)間:2023/12/9 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬取淘宝商品评论——2020-8月 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本文具有時(shí)效性,指不定哪天失效

時(shí)間:2020-8

網(wǎng)頁分析

一般來說,請求的數(shù)據(jù) 會有幾種可能:

1、很簡單的html頁面(靜態(tài)網(wǎng)頁),就直接requests就可以請求成功;

2、js渲染的頁面 ,很常見,requests請求一堆js數(shù)據(jù);

3、需要登錄才能獲取,登錄后,把cookie 加入請求;

4、json數(shù)據(jù)

顯然淘寶不是靜態(tài)網(wǎng)頁,直接打開某個(gè)商品(我們這里選擇Nike旗艦店的一雙鞋),選擇評論頁面,按F12進(jìn)入調(diào)試頁面頁面,選擇network,然后點(diǎn)擊評論的下一頁觀察頁面請求


放大看一下

顯然評論數(shù)據(jù)就藏在list_detail開頭的響應(yīng)中,那我們就直接看標(biāo)頭(按照慣例,直接復(fù)制標(biāo)題鏈接打開,并不能得到想要的信息,那就是還需要請求標(biāo)頭的信息):

一般來說,這么長的請求是比較難看的,通常需要多觀察幾頁

重點(diǎn)在前面那部分,sellerid應(yīng)該是商品id,currentpage是當(dāng)前評論頁,并且 &ua= 后面那一段長長的字符并不相同,或許可以把它去掉,待會代碼試試。
再看看請求標(biāo)頭需要什么:

authority + path 就是上面的請求url,其他的language,encoding,每個(gè)網(wǎng)頁基本都一樣的,可加可不加。
我們需要的是cookie(記錄客戶端的用戶信息,登錄后會有),referer(告訴服務(wù)器該網(wǎng)頁是從哪個(gè)頁面鏈接過來的),user-agent(爬蟲老朋友了,瀏覽器標(biāo)識)

代碼分析

開始寫代碼試試

import requestspage = 1 #最終代碼改成for循環(huán)可以遍歷下載path = 'https://rate.tmall.com/list_detail_rate.htm?itemId=612891862405&spuId=1532072041&sellerId=890482188&order=3&currentPage=' url = path + str(page) #原始鏈接加上頁面headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.59 Safari/537.36 Edg/85.0.564.30',#referer隨便填個(gè)淘寶網(wǎng)頁應(yīng)該都能用'referer': 'https://detail.tmall.com/item.htm?spm=a230r.1.14.80.675374f6O2Yqxg&id=612891862405&ns=1&abbucket=15','cookie': '復(fù)制你的cookie在這里'} res = requests.get(url,headers = headers)

直接打印看看有沒有獲取成功:

可以看到數(shù)據(jù)是在的里面,雖然看起來亂七八糟。我們把里面的json提取出來就好:

import re js_str = re.search('\{.*}',res.text) js_str.group()


用josn加載會直觀看出鍵值對:

import jsonjs_dict = json.loads(js_str.group()) js_dict

取出需要的屬性(我這里只選擇評論,商品屬性,時(shí)間):

分析到這里已經(jīng)足夠了,接下來可以根據(jù)自己需求寫代碼:

最終代碼:

import requests import re import json import time import pandas as pddef get_comments():for page in range(1,20):link = 'https://rate.tmall.com/list_detail_rate.htm?itemId=612891862405&spuId=1532072041&sellerId=890482188&order=3&currentPage='url = link + str(page) #原始鏈接加上頁面數(shù)headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.59 Safari/537.36 Edg/85.0.564.30','referer': 'https://detail.tmall.com/item.htm?spm=a230r.1.14.80.675374f6O2Yqxg&id=612891862405&ns=1&abbucket=15','cookie': '復(fù)制你的cookie到這里'}res = requests.get(url,headers = headers)js_str = re.search('\{.*}',res.text)js_dict = json.loads(js_str.group())time.sleep(7)dict_content = {}rateContent = [] #評論auctionSku = [] #款式rateDate = [] #時(shí)間for i in range(len(js_dict['rateDetail']['rateList'])):rateContent.append(js_dict['rateDetail']['rateList'][i]['rateContent'])auctionSku.append([js_dict['rateDetail']['rateList'][i]['auctionSku']])rateDate.append([js_dict['rateDetail']['rateList'][i]['rateDate']])dict_content['rateContent'] = rateContentdict_content['auctionSku'] = auctionSkudict_content['rateDate'] = rateDate#dict_content['id'] = '890482188'df = pd.DataFrame(dict_content)if page == 1:df.to_csv('./nike.csv',encoding='utf_8_sig')else:df.to_csv('./nike.csv',mode = 'a',header= False,encoding='utf_8_sig')print('已保存第',page,'頁','這一頁有',i,'條評論')if __name__ == '__main__': get_comments()

詞云

補(bǔ)充

這僅僅只是一個(gè)商品的評論頁面,能做的事還有很多,比如獲取商品的屬性,價(jià)格,月銷量;遍歷多個(gè)商品,店鋪;對獲取到的數(shù)據(jù)進(jìn)行數(shù)據(jù)分析;

并且實(shí)際上搜索頁面的商品數(shù)據(jù)就在網(wǎng)頁源代碼中:
user_id是商品id,并且在這里可以直觀的獲取價(jià)格,銷量,評論數(shù)(這對我們控制上述代碼控制for循環(huán)很有用)

總結(jié)

以上是生活随笔為你收集整理的爬取淘宝商品评论——2020-8月的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。