商品评论分析1

相较于客户行为(点击习惯、访问深度、需求关联等)或者客户属性(年龄段、性别、地区等),客户的正面询问与反馈尤为重要。正面询问的目前大概了解的是2个方向,一是客户来电语音转文本后进行的智能归档,二是人机交互(ASR或在线文本);反馈的方面则是用户的建议、评价或问题等等。

  本文进行的是反馈方面的分析。一是正面询问的信息往往是企业内部才有,二是反馈分析也有重要意义。个人见解,对企业,反馈分析可以了解用户关注点;对竞争者,由于正面信息难以拿到,分析对手的用户反馈可以了解对手;对普通购物者,很多时候商品的负面评论很少甚至被掩盖,这时获取其他购买者的反馈并精确定位负面评价可以帮助自己判断(有时候商品虽有很多优点,但存在一些细节可能自身无法接受)。

  笔者思路是采集某个天猫商品的评论,根据评价来分析不同规格商品的差异、用户关注点、产品问题等等。

  步骤:采集评论——数据处理——数据分析

一、采集评论文本

采集的方法有很多,爬虫(通过评论链接来)、借助采集器(好像八爪鱼)、还有写自动化程序,如用python(selenium、pyautogui)。笔者采用uibot的功能加上自定义插件来采集,提升下效率~

1、uibot自定义插件

    uibot支持IE浏览器(其他的还有谷歌和火狐,暂时没试过),插件支持python,自定义的功能放在extend文件夹,然后涉及的python包放在lib\site-packages文件夹。建议是放完插件后重开uibot,因为有时会提示未找着。笔者的自定义功能是查找商品标题(正则表达式)和规范化uibot采集的内容,方便写入excel。

插件代码:

def getallwt():
    titles = pygetwindow.getAllTitles()
    return titles
def arrtmall(arr):
    arr1=[]
    arr2=[]
    for i in range(len(arr)):
        for j in range(3):#len(arr[i])
            arr1.append(arr[i][j])
    for i in range(0,len(arr1),3):
            arr2.append(arr1[i:i+3])
    return arr2
def sleeptime(t):
    time.sleep(t)

2、采集评论

方式先采集第一页的评论,再用循环采集后续的。

扫描二维码关注公众号,回复: 15730168 查看本文章

期间遇到的问题和解决方法:

(1)uibot找到“下一页”这个元素后,刚好停留在页面底部,鼠标点击不到。解决方法是先移动到元素,再模拟滚动,再点击。

(2)翻页太快,触发天猫的反爬机制(弹出验证框)。解决方法是延迟进行,笔者设置延迟是5s,未出现验证框。

效果图:采集了99页(好像是最多99?),3个字段分别是评论、细类和购买者(后续如需要可以吧时间也采集下来)

uibot代码:

title=XX//打开的商品链接浏览器标题
kfExcelWorkBook = Excel.OpenExcel("D:\\tmall评论爬取.xlsx",true)
win=getwindow.getwt(title)
TracePrint win
Window.SetActive({"wnd":[{"cls":"IEFrame","title":win,"app":"iexplore"}]})
tmall = UiElement.DataScrap({"html":{"attrMap":{"parentid":"J_Reviews","tag":"TABLE"},"index":0,"tagName":"TABLE"},"wnd":[{"app":"iexplore","cls":"IEFrame","title":win},{"cls":"Internet Explorer_Server"}]},{"Columns":[],"ExtractTable":1},{"objNextLinkElement":"","iMaxNumberOfPage":5,"iMaxNumberOfResult":-1,"iDelayBetweenMS":1000,"bContinueOnError":false})
// TracePrint tmall
arr=arrtmall1.arrtmall(tmall)
// TracePrint arr
rows = Excel.GetRowsCount(kfExcelWorkBook,"Sheet1")
Excel.WriteRange(kfExcelWorkBook,"Sheet1","A"&rows+1,arr,true)
Excel.Save(kfExcelWorkBook)
// 爬取页数
page=100
c=2
Do While c<=page
    Window.SetActive({"wnd":[{"cls":"IEFrame","title":win,"app":"iexplore"}]})
    Mouse.Hover({"html":[{"aaname":"下一页>>","parentid":"J_Reviews","tag":"A"}],"wnd":[{"app":"iexplore","cls":"IEFrame","title":win},{"cls":"Internet Explorer_Server"}]},10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
    Mouse.Wheel(1,"down", [],{"iDelayAfter":300,"iDelayBefore":200})
    Mouse.Action({"html":[{"aaname":"下一页>>","parentid":"J_Reviews","tag":"A"}],"wnd":[{"app":"iexplore","cls":"IEFrame","title":win},{"cls":"Internet Explorer_Server"}]},"left","click",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
    arrtmall1.sleeptime(5)
    tmall = UiElement.DataScrap({"html":{"attrMap":{"parentid":"J_Reviews","tag":"TABLE"},"index":0,"tagName":"TABLE"},"wnd":[{"app":"iexplore","cls":"IEFrame","title":win},{"cls":"Internet Explorer_Server"}]},{"Columns":[],"ExtractTable":1},{"objNextLinkElement":"","iMaxNumberOfPage":5,"iMaxNumberOfResult":-1,"iDelayBetweenMS":1000,"bContinueOnError":false})
    // TracePrint tmall
    arr=arrtmall1.arrtmall(tmall)
    // TracePrint arr
    rows = Excel.GetRowsCount(kfExcelWorkBook,"Sheet1")
    Excel.WriteRange(kfExcelWorkBook,"Sheet1","A"&rows+1,arr,true)
    Excel.Save(kfExcelWorkBook)
    c=c+1
Loop

后续https://blog.csdn.net/m0_49621298/article/details/107585855

猜你喜欢

转载自blog.csdn.net/m0_49621298/article/details/107603652