python爬取淘寶評論數(shù)據(jù)導入excel表格并做處理

其實代碼都很簡單本人編程能力也很一般品腹,且并不是專業(yè)做python,只是一個擴展技能岖食,有什么錯漏之處請禮貌指出謝謝啦

第一步爬取淘寶評論數(shù)據(jù),主要使用request,time
幾個要點:
1.header最好給全
2.參數(shù)中有兩個是動態(tài)參數(shù)需要根據(jù)時間戳進行動態(tài)賦值否則會被反爬舞吭,我有做了簡易的動態(tài)UA泡垃,無用,還是需要時間戳的動態(tài)參數(shù)
3.以我本人的能力無法爬取到99頁以后的內(nèi)容羡鸥,我是使用接口傳參的方式去爬的蔑穴,超過99頁以后的頁數(shù)接口不會報錯但是仍然返回99頁的數(shù)據(jù)
4.必須設置sleep,我平時設置10秒或者8秒否則淘寶會彈出反爬的警示框

直接上代碼

import requests
import json
import pandas
import time

#獲取時間戳
t_param = time.time()
t_list = str(t_param).split('.')

headers = {
    'authority': 'rate.tmall.com',
    'pragma': 'no-cache',
    'cache-control': 'no-cache',
    'sec-ch-ua': '^\\^',
    'sec-ch-ua-mobile': '?0',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'accept': '*/*',
    'sec-fetch-site': 'same-site',
    'sec-fetch-mode': 'no-cors',
    'sec-fetch-dest': 'script',
    'referer': '根據(jù)商品信息填寫referer',
    'accept-language': 'zh-CN,zh;q=0.9',
    'cookie': '你的cookie',
}

#一定要加動態(tài)參數(shù)!
params={
    "itemId":"根據(jù)url參數(shù)獲取",
    "sellerId":"根據(jù)url參數(shù)獲取",
    "currentPage":"1",
    "callback":str(int(t_list[1][3:])+1),
    "_ksTS":t_list[0]+t_list[1][:3]+"_"+t_list[1][3:]
}


col=['auctionSku','rateContent','rateDate','reply']
auctionSku=[]
rateContent=[]
rateDate=[]
reply=[]
pics=[]

url="https://rate.tmall.com/list_detail_rate.htm"

for page in range(1,100):
    params["currentPage"]=str(page)
    req=requests.get(url,params,headers=headers).content.decode('utf-8');
    result=json.loads(req[req.index('({')+1:-1]);
    for item in result['rateDetail']['rateList']:
        auctionSku.append(item['auctionSku'])
        rateContent.append(item['rateContent'])
        rateDate.append(item['rateDate'])
        pics.append(item['pics'])
        if item['appendComment']:
            reply.append(item['appendComment']['content'])
        else:
            reply.append('')
    print('第'+str(page)+'頁完畢')
    time.sleep(8)

df = pandas.DataFrame({
    '產(chǎn)品名字':auctionSku,
    '初評':rateContent,
    '初評時間':rateDate,
    '初評圖片':pics,
    '追評':reply
})

df.to_excel("1-99.xlsx", sheet_name="評論數(shù)據(jù)", index=False, header=True)

第二步根據(jù)excel表格做數(shù)據(jù)處理惧浴,主要依賴pandas,pyecharts
我的目的是根據(jù)評論和追評內(nèi)容的關鍵詞來判定用戶屬性存和,打上標記然后計算標記數(shù)量輸出成分分析到echarts餅圖
注意:我下載的pyecharts插件是v1版本的,但本人實測舊版本更好用衷旅,可找到的資料更多捐腿,新版本語法很多都修改了,資料少柿顶,百度寫法時一定要帶上V1版本來檢索茄袖。可惜我的公司電腦環(huán)境不知道哪里不對嘁锯,舊版安裝一直失敗只能委屈使用新版本宪祥。

import pandas
from pyecharts.charts import Pie
from pyecharts import options as opts

tf1 = pandas.read_excel('1-99.xlsx')
tf = tf1.copy()

# # 產(chǎn)品類別篩選
tf = tf1[tf1.iloc[:,0].str.contains('03')|tf1.iloc[:,0].str.contains('16')]
# # 全量標記
tf = tf.copy()
tf.loc[:,'粉絲類別'] = '無法識別'
#

type = {
    'cpf':['浪浪釘','^(?=.*?張哲瀚)(?=.*?龔俊).+$',
           '山人','lld','LLD','cp','CP','cpf','浪釘','^(?=.*?貓)(?=.*?狗).+$',
           '嗑糖','俊哲','端水','橘子皮','俊哲批','份子','張老師','雙人','npc','NPC','雙代','全城熱戀',
           '^(?=.*?張)(?=.*?龔).+$','^(?=.*?俊子)(?=.*?公主).+$','^(?=.*?俊子)(?=.*?老婆).+$','^(?=.*?俊俊)(?=.*?老婆).+$',
           '^(?=.*?俊俊)(?=.*?lp).+$','^(?=.*?俊俊)(?=.*?哲瀚).+$','^(?=.*?jz)(?=.*?zh).+$',
           '^(?=.*?溫)(?=.*?周).+$','^(?=.*?老公)(?=.*?老婆).+$','^(?=.*?Zh)(?=.*?gj).+$','^(?=.*?zh)(?=.*?gj).+$',
           '^(?=.*?阿絮)(?=.*?老溫).+$', '^(?=.*?哲瀚)(?=.*?俊子).+$','^(?=.*?惡龍)(?=.*?公主).+$','^(?=.*?西蒙)(?=.*?公主).+$',
           '^(?=.*?老龔)(?=.*?老婆).+$','^(?=.*?星星)(?=.*?月亮).+$','^(?=.*?俊俊)(?=.*?瀚瀚).+$','^(?=.*?星星)(?=.*?月亮).+$',
           '^(?=.*?梔子花)(?=.*?柑橘).+$','嗑',
           ],
    '海哲':['海哲','hz','瀚哥','張哲瀚','小哲','hzjj','瀚瀚','哲瀚'],
    '俊味仙':['俊味仙','jwx','i俊','俊寶','龔俊','俊俊','俊子'],
}

# cpf
tf.loc[tf.iloc[:,1].str.contains('|'.join(type['cpf']))|tf.iloc[:,4].str.contains('|'.join(type['cpf'])),'粉絲類別']='cpf'

# 俊味仙
tf.loc[(tf.iloc[:,1].str.contains('|'.join(type['俊味仙']))|tf.iloc[:,4].str.contains('|'.join(type['俊味仙'])))&(tf['粉絲類別']!='cpf')&(tf['粉絲類別']!='海哲'),'粉絲類別']='俊味仙'

# 海哲
tf.loc[(tf.iloc[:,1].str.contains('|'.join(type['海哲']))|tf.iloc[:,4].str.contains('|'.join(type['海哲'])))&(tf['粉絲類別']!='cpf')&(tf['粉絲類別']!='俊味仙'),'粉絲類別']='海哲'

keyWords = {
    '關鍵字':[],
    '數(shù)量':[]
}
for typeItem in ('cpf','海哲','俊味仙'):
    for item in type[typeItem]:
        keyWords['關鍵字'].append(item)
        if list(tf.iloc[:,1].str.contains(item).value_counts()).__len__()==2:
            keyWords['數(shù)量'].append(list(tf.iloc[:,1].str.contains(item).value_counts())[1])
        else:
            keyWords['數(shù)量'].append(0)

keyWordsdf =pandas.DataFrame(columns=('關鍵字','數(shù)量'))
keyWordsdf = pandas.DataFrame(keyWords)
keyWordsdf.to_excel('tf關鍵詞結果.xlsx',sheet_name='tf關鍵詞',index=False,header=True)

# 輸出到表格
tf.to_excel("tf1-99結果.xlsx", sheet_name="tf", index=False, header=True)

x_data =["cpf", "海哲", "俊味仙", "無法識別"]
y_data = [int(tf[tf['粉絲類別']=='cpf']['粉絲類別'].count()),
          int(tf[tf['粉絲類別']=='海哲']['粉絲類別'].count()),
          int(tf[tf['粉絲類別']=='俊味仙']['粉絲類別'].count()),
          int(tf[tf['粉絲類別']=='無法識別']['粉絲類別'].count())]

#餅圖用的數(shù)據(jù)格式是[(key1,value1),(key2,value2)],所以先使用 zip函數(shù)將二者進行組合
data_pair = [list(z) for z in zip(x_data, y_data)]
Pie(init_opts=opts.InitOpts(bg_color="#2c343c")).add(
    #系列名稱家乘,即該餅圖的名稱
    series_name="粉絲成分",
    #系列數(shù)據(jù)項蝗羊,格式為[(key1,value1),(key2,value2)]
    data_pair=data_pair,
    #通過半徑區(qū)分數(shù)據(jù)大小 “radius” 和 “area” 兩種
    rosetype="radius",
    #餅圖的半徑,設置成默認百分比仁锯,相對于容器高寬中較小的一項的一半
    radius="55%",
    #餅圖的圓心耀找,第一項是相對于容器的寬度,第二項是相對于容器的高度
    center=["50%", "50%"],
    #標簽配置項
    label_opts=opts.LabelOpts(is_show=False, position="center"),
).set_global_opts(
    #設置標題
    title_opts=opts.TitleOpts(
        #名字
        title="粉絲成分",
        #組件距離容器左側(cè)的位置
        pos_left="center",
        #組件距離容器上方的像素值
        pos_top="20",
        #設置標題顏色
        title_textstyle_opts=opts.TextStyleOpts(color="#fff"),
    ),
    #圖例配置項扑馁,參數(shù) 是否顯示圖里組件
    legend_opts=opts.LegendOpts(is_show=False),
).set_series_opts(
    tooltip_opts=opts.TooltipOpts(
        trigger="item", formatter="{a} <br/>涯呻: {c} (rd4ykqx%)"
    ),
    #設置標簽顏色
    label_opts=opts.LabelOpts(color="rgba(255, 255, 255, 0.3)"),
).render("粉絲成分.html")
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末凉驻,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子复罐,更是在濱河造成了極大的恐慌涝登,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件效诅,死亡現(xiàn)場離奇詭異胀滚,居然都是意外死亡,警方通過查閱死者的電腦和手機乱投,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門咽笼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人戚炫,你說我怎么就攤上這事剑刑。” “怎么了双肤?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵施掏,是天一觀的道長。 經(jīng)常有香客問我茅糜,道長七芭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任蔑赘,我火速辦了婚禮狸驳,結果婚禮上,老公的妹妹穿的比我還像新娘缩赛。我一直安慰自己耙箍,他們只是感情好,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布酥馍。 她就那樣靜靜地躺著究西,像睡著了一般。 火紅的嫁衣襯著肌膚如雪物喷。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天遮斥,我揣著相機與錄音峦失,去河邊找鬼。 笑死术吗,一個胖子當著我的面吹牛尉辑,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播较屿,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼隧魄,長吁一口氣:“原來是場噩夢啊……” “哼卓练!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起购啄,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤襟企,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后狮含,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體顽悼,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年几迄,在試婚紗的時候發(fā)現(xiàn)自己被綠了蔚龙。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡映胁,死狀恐怖木羹,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情解孙,我是刑警寧澤坑填,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站妆距,受9級特大地震影響穷遂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜娱据,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一蚪黑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧中剩,春花似錦忌穿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至郊愧,卻和暖如春朴译,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背属铁。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工眠寿, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焦蘑。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓盯拱,卻偏偏與公主長得像骇两,于是被迫代替她去往敵國和親穿肄。 傳聞我的和親對象是個殘疾皇子卵沉,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內(nèi)容