python抓取淘寶商品評論并分詞分析_第1頁
python抓取淘寶商品評論并分詞分析_第2頁
python抓取淘寶商品評論并分詞分析_第3頁
python抓取淘寶商品評論并分詞分析_第4頁
python抓取淘寶商品評論并分詞分析_第5頁
已閱讀5頁,還剩7頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

python抓取淘寶商品評論并分詞分析python抓取淘寶商品評論并分詞分析數(shù)據(jù)時(shí)說的是很多問題和事物都可以通過數(shù)據(jù)分析達(dá)到選擇最優(yōu)的解決方案不要認(rèn)為這些離我們生活很遠(yuǎn),其實(shí)不然。比如我們經(jīng)常去淘寶買東西,我們最終都是在看好的幾家商鋪中去選擇,而我們最終選擇哪家商鋪大多都是根據(jù)商品的評價(jià)來選擇,這是最基礎(chǔ)的數(shù)據(jù)應(yīng)用,并且這也只能看見表面的現(xiàn)象??偹苤硨毣蚰硸|等各平臺(tái)上,商品評價(jià)存在各種造假或者各種刷單(天貓店鋪甚至連差評的標(biāo)簽都沒有,就是說不能差評了,真鄙視它),同時(shí)評論數(shù)量很多,也沒辦法一條條看下去。今天,我們就用數(shù)據(jù)分析的手段對我們想購買的商品評論進(jìn)行分析,讓奸商見鬼去吧。假設(shè)我們想要個(gè)電動(dòng)滑板代步車(這也算是大件了),于是在淘寶進(jìn)行搜索,并最終鎖定幾家店鋪的商品:SSIk掣磕電動(dòng)宿相牟鋰電池折暨式成人電薊自行車代罰代步車電祈耕弟買口站焊嵌年觸七艾無剽I遂譜三頃肪格¥廿的削>:|切0,口。260362畦據(jù)¥1039.00011^1□I上與至上瀉齡愈區(qū),枳連史運(yùn)景,*?r娜漏西7酒里所謎口電擠無禮目幻S席監(jiān)-4541^版I誨□電£、:-志甜禮也55上里f:-l|3*^.t送頑也rimSdEiffi目就}SI『:誑口球送砂札tl帶匚*■舟I!l遇口電志:丙禮可用座祐溟航3列里史[電S-該部耕片維勝認(rèn)代駕電動(dòng)消振車成人鋰電迷你電動(dòng)車倆輪折暨代步電面自行車全壬gt硒亂通月主希吉$276D.0051E0.00舶^1006.00-1729.00想¥1005.00^:T?手機(jī)天誣鳩買更哽育蓼1935mi.浙江舍¥至日工V'關(guān)遂0.00115-25^里[匡戶虧右】元X加元車快市與座站-益牡里[已陣芯】無他曳布車匣北-Sfl公里[ffiimte]送函饋旬串辛正55?里[弟住加氐衲:芯韋年正站箕里[荒舊古】謎奈革禮生無車距防G5公里[旱W芯】無禮目無季生茹-50G蟲L克,朝苫】在哀心歸1935mi.表面上兩個(gè)商品的評價(jià)都很好但是仔細(xì)分析發(fā)現(xiàn)刷單很嚴(yán)重。下面我就開始對各家店鋪的商品評論進(jìn)行分析。這里不討論我的爬蟲設(shè)計(jì)的過程以及相關(guān)的url獲取,因?yàn)檫@個(gè)過程比較復(fù)雜,需要不停的嘗試和查找,比較

python抓取淘寶商品評論并分詞分析偏技術(shù)(我花了好些時(shí)間才找到正確的ajx接口)。整個(gè)數(shù)據(jù)處理以及分析過程都是基于python來實(shí)現(xiàn)的。伯格win如上圖:紅框內(nèi)的網(wǎng)址,復(fù)制到數(shù)據(jù)處理腳本中塞機(jī)正會(huì)四年倪佳?卻包械七無無理由正聳轉(zhuǎn)三包脫勞X_UMi.CiCi268362累計(jì)件止/吊.角;:伯格win如上圖:紅框內(nèi)的網(wǎng)址,復(fù)制到數(shù)據(jù)處理腳本中塞機(jī)正會(huì)四年倪佳?卻包械七無無理由正聳轉(zhuǎn)三包脫勞X_UMi.CiCi268362累計(jì)件止/吊.角;:¥1039.00033軍拒:上瞬誨-ET址跆4做觥蹣=x>pyMToof岫*西伸隹游x*葡Ml醒電動(dòng)割E坦x4-☆已91H://itsm.taDbaoxom/iterrirhtrn?5pm=alzOd.663953?.T?辦『四百巧dE9百度.Tu5lharE-Bf疇送股藏息.四Ttaho|[■:■福憤如網(wǎng)入劉迎腌壇8?5O跌獎(jiǎng)■警詢段也$EA5JEH.h?l[工廠宜苗j5J■1W;1111語言轉(zhuǎn)向python,當(dāng)然從統(tǒng)計(jì)學(xué)的專業(yè)性來說R語言更權(quán)威。首先把網(wǎng)頁的網(wǎng)址復(fù)制下來*1磷電動(dòng)精板車鋰電艷折疊式成人電動(dòng)自行車代駕代步車電瓶url=’/item.htm?spm=a1z0d.6639537.1997196601.4.NLuedO&id=527262264900’如下圖:134135尊端入網(wǎng)址13&137?url=:7/deiai.L.tnuLL.comi/ite/!?.him?id=532591496697&spm=ctlz&k-.73S5993.19979Q4-373.d49193Slurl=1https://detail.tmall.ccm/iteni-htni?spm=a230T.1.14.22.CPe61jS.id=534388747823^.ns=l&abbucke1其中527262264900是id,下面就根據(jù)這個(gè)網(wǎng)址進(jìn)行數(shù)據(jù)抓取。由于淘寶后臺(tái)的限制,雖然評論數(shù)有2585條,但是我們只能抓取最近評論的1980條數(shù)據(jù)。雖然不算多但是對單個(gè)產(chǎn)品分析還是足夠的。抓取的數(shù)據(jù)后如下圖所示:ramcuwrcontentsdittftimtappendlime^p^endcornenupjytinne離f史a沃肉買發(fā)未指出譚伯69:46:582616-16-1709H5:59電迥其甜不翁力,其他還行2Q1G-SS-2489:39:23新子■1味的天素未指出枷2016-18-15li;5-0:592G1?-10-1513;51:06蛭罷了,布底規(guī)絲掉7r軍副底I碩了.馬裹碧亍,回應(yīng)莪捧亍2616-^-2906:31:59axabl4佝買影出枷£?16-16-1416:19:542G1G-1^-1416:19:54之箱一直奇首瀆奉成笠近好想想線甘了呻千趣的東西居面既憤績發(fā)生很多毛商什久-狷誓?站轉(zhuǎn)11:15:4^t…515*佝英琵來作出許伯M16-L0-13ia=49!192616-10-13-lS!45iig真的是麟AJPO差至懷行?藪了肆月評旅壞掄子,共了m個(gè)月不不夠電池;悴進(jìn)安電了,2016-05-2715:33:51擔(dān)…W1詼內(nèi)買款耒作出洋伯M16-L0-13&915^!122616-10-liSB!55!13大豆年萬不妻其,車子扁國有很多間甑,克了花次電,充電富就自己埔了。扉系舂胴,說是可.??2?16-i39-t521;*3;571***9,詼的買家未作出諄伯2916-1^-1216:34;33seie-ie-1216;34;33生子號堂不檔、中可有直出間輯G■:夬了20116-08-2415:04:13hi***i.醒件卜出fli賜,51策霎買卑日日出旌暖寄回去憤?耽誤買.LhMMHBT2016-09-24-14!25^45m詼內(nèi)英魅借出澤伯16=55:542616-1C-?9-16i55;561-使用起無不涂「斕差不多站排標(biāo)翩日卵L至手佛配’土生用巡來不方■便M.仗用五個(gè)月“501^-05-2512:22il5臺(tái)…犬蘭歐的買蒙米作出明臼Z016-10-S9孫19出2016-10-69-6=9:19:33E■產(chǎn)■不荷臺(tái),3的5酒望?醪鄢是臨到胡冬里醇嶷了,2016-05-3111心二力柬宓司以吧?橫映卻壞了到現(xiàn)在踵信理哽血就是-.z&i&-ia-&811;09:26心是誓■搏-M14:15:24ts*"01S^P3英冢未作出許們Z016-1B-0719-:03:432S1C-10-6719!?^:49正第蛛生孕,白于豐子昉水功股剝艇如立下而天中使用,車子電藏退水下熟后電瓶無法一2016-AS-1514!22321時(shí)TE錄珂美參未作出評伯Z&16-L0-0715£80!5?2016-10-67I5*?0:51盲S共了電離空有喊硒有員湫出采,電活也不就必溥蹌*買、整兄生兆知.??2句IE-。再-申任10;&4;53蘇…[隊(duì)天肉買家未住出詳伯L4:48;272616-1ft-(0714143:28生亍絡(luò)力的不行展魅—旬垃圾中的心』演棲中的極呂。知扒齡■玉了幾天捅氣*命2016-06-1915:40:16溫…解1歡內(nèi)買家未作出評倘29ie-L0-9Gil:5i:57201E-ie-e&21:31:59購住尖艮、扭劾加魄遍/成,紅舞$7■揚(yáng)盼,燃指鄂雌庠防或熾貌至拽,隊(duì)2?16-fl§-270g:Z?:57太稀了,狷牘時(shí)一樣「柬度散噩喂,克電謝廓池部mmL?:27:45201^-10-^15:2^:24261S-09-1SSB:21-S71■=^Rrti百*斗作中諱那iW6-10-&6ieifi-ie-efr福7?奮用川7^卻席洼十至。至的Bt冊呈nTffilR-R7.7?id?i主-彳響User是淘寶ID,contens是首次評價(jià)內(nèi)容,datetime是首次評價(jià)日期。Appendtime是指追評日期,appendcontents是追評內(nèi)容,paytime是只購買日期(天貓店鋪不提供),price是只單價(jià)(天貓店鋪不提供)。在程序的運(yùn)行目錄下生成下列文件,各文件的標(biāo)題包含商品id□527262264M02O1&/1&/2214:49朝499KE1115272622&4&OObad.jpg2O1&/1&/2214:49JPEGgft592KB日527262264&00goodjpg2O16/1&/221449JPEG囹除622KEE?527262264docx2O1&/1&/2214:50MicrosoftW&rd...1,303KE111527262264&00aiDS^ifEjpg2O1&/1&/2214:49JPEGSft&1KB第一個(gè)文件是抓取的評論,為了防止數(shù)據(jù)重復(fù)抓取,我們把它作為txt文件存儲(chǔ)。主要手段是網(wǎng)絡(luò)爬蟲user,contents,Saterur.e,.^_payTuieHclerailPTicer,appenl^inue,appendzonzents.展MS次,二天內(nèi)買家未作出評僑注OM-二-二:?駐:5£二勺%°實(shí)IE#::。。,二光.。二qr3-E-二-亶電池真的不給力,羔他還行藤*S爭」5天內(nèi)買象夫作出祁補(bǔ),20比-1£|-。5J3:&0:£9,1459309919000,1B98.J,2D16-1D-1S13:51:0DH^jfc爆亍,車函嗦絲掉了〉尊£…0U天內(nèi)買家秉ft由許立HJ.6-工-1416:19:5、1項(xiàng)g噲次.OCmD-宜":二之帝一盲看著圭家服務(wù)汪亦想?:5t***-5r15天看圣家釜作出許僑,如g-m-1318;13,1^6^3331000r219fl.00,1,2016-10-131BH9;是醉了,質(zhì):S蚤旬不有,孕S?f**-*6r15天丙買家未作出評價(jià)浦MS-1。-置09;55;1ZF1-4739^637000?1368,00,1,2016-10-1309;55;13,±^千萬不要買,車子質(zhì)量看」^Hl*A*9r15無內(nèi)買家未作出評,,2(][8-[口-216:34:33,1474693458CC0r1E9S.CD,1,JQ1E-1Q-12lfi:34:3Sr^子原量不箱、中間有點(diǎn)小問蜀W3***1,配偉.?二&1‘門恐,E至至買京口二三部費(fèi)寄回元至z電該蕓京m常行袒,cciH-m-「二m:二7fL??.?些mm與5C!0r15攔.」1,,由于淘寶對評論數(shù)據(jù)的限制,我們只能獲取最近的2000條數(shù)據(jù),再遠(yuǎn)的數(shù)據(jù)是獲取不到的。第二個(gè)文件日匯總統(tǒng)計(jì)圖;每日的評價(jià)數(shù)量趨勢圖,主要看銷量變化和價(jià)格變化(價(jià)格變化天貓店鋪數(shù)據(jù)不包含)

上圖體現(xiàn)的是評論數(shù)、和價(jià)格變化趨勢。從評論數(shù)的角度可以反推銷售數(shù)。當(dāng)然銷售數(shù)肯定大于評論數(shù)。那么我們可以從上圖看到什么呢?1、3月11日后開始統(tǒng)計(jì)。4月下旬后銷量飆漲,然后逐月遞減。7月后回到原有銷量水平。就是說在5、6、7月商品突然維持一個(gè)高的銷量水平,然后有立馬降下去(即使價(jià)格下降銷量還是下降)。很顯然刷單2、一個(gè)奇怪現(xiàn)象,價(jià)格高銷量好,價(jià)格下降了銷量反而下降,很不尋常。估計(jì)有大量刷單3、追評數(shù)和追評率看不到特殊異狀。第三個(gè)文件是差評詞云圖,主要看差到哪了。首先定義差評:評論中包含下列詞匯的我們認(rèn)為這條評價(jià)是差評【’太差',’材料差',’各種問題',’出現(xiàn)問題',’質(zhì)量差',’坑人',’很差',’不滿意',’冒牌',’假的',’服務(wù)差','毛病',’非常差',’廢物',’垃圾',’破爛',’不值',’各種問題',’差評',’壞的',’壞了’,’爛了’,’無良',’騙子','欺騙',’不達(dá)標(biāo)',’出問題',’特差',’上當(dāng)',’不能用',’報(bào)廢',’殘次',u'差勁',’坑爹',’太黑',’不要買',’后悔',’有多差',’被坑’】

根據(jù)差評的評論可以先分詞,再按詞統(tǒng)計(jì)生成詞云。如圖所示我們有以下分析結(jié)果:1、大家關(guān)注的要點(diǎn)是公里、續(xù)航、電池,大概就是電池不夠、續(xù)航差,一班也就15、20、30公里,,、_京內(nèi)買徐帆許的,.,,—,,2、【作出評價(jià)】【15】【一個(gè)月】【好評】,這個(gè)詞主要來源是說明差評的買家在首次多數(shù)是沒有評價(jià)的,主要是追評,追評為差評3、【壞了】【螺絲】【質(zhì)量】【客服】【售后】為特征詞,大概可以想象差評的主要原因。質(zhì)量不好,某個(gè)東西容易壞、比如螺絲。售后也不咋地,客服很垃圾。等等第四個(gè)是剔除刷單買家評論、絕對好評客戶后的其他評論生成的詞云圖,主要用來看客戶大致評價(jià)python抓取淘寶商品評論并分詞分析首先定義疑似刷單評價(jià),這個(gè)包含兩方面一是當(dāng)天評價(jià)又在10個(gè)小時(shí)內(nèi)追評的(當(dāng)然不包含差評),按照買家習(xí)慣。正常買家一般不會(huì)追評,追評的一般都都是過了些天發(fā)現(xiàn)有問題才來差評(除非商戶給買家優(yōu)惠或者是買家太無聊才會(huì)追好評,這個(gè)大家經(jīng)常網(wǎng)購的清楚),何況當(dāng)天就追評的那是少之又少,我們是秉承寧可錯(cuò)殺1000也不放過一個(gè)原則,將能找到的刷單盡量找出來。二是從買家ID評論的次數(shù)來看。雖然淘寶隱藏了買家ID中間的一些文字。但是我們還是可以從這買家ID來識別刷單。這種買家ID出現(xiàn)相同的概率還不是很大,而且在同一商品下出現(xiàn)相同的買家ID概率會(huì)更小,但是不排除這種可能。所以我們可以定義同一買家ID出現(xiàn)超過4次的認(rèn)為該買家ID存在刷單行為。至于為什么是4這個(gè)是我通過幾家店鋪的的評論數(shù)據(jù)百分比得出的(而且有句老話就是是不過三),當(dāng)然你也可以設(shè)為5,甚至6、7、8。按買家ID評論統(tǒng)計(jì)如下,同一個(gè)買家ID評論數(shù)多大36次,很顯然認(rèn)為是刷單專業(yè)戶。如下圖?2、疑似刷單用戶ID,以及評論次數(shù)u用戶ID評論次數(shù)。3護(hù),q25戶戶23p1聽口廿木四刀1如Q14^FL1驢13^3IB戶10pp10ppLO*日Fp1川歡94口qp廣*如口^*?*1'*Jqp3有意思t***0,t***1,t***2,t***3t***8,t***9,這0到9都到齊了,不是刷單才怪了。比較賬號多了不好記,這樣取名符合刷單特征。極端情況我們甚至可以把以數(shù)字結(jié)尾,字母開頭的非差評買家定義為刷單,這里沒有,但是如果這樣定義后的仍然有幾百條買家評論存在也是可以的。接著定義絕對好評,絕對好評就是首次評論中使用非常絕對的好評詞匯。例如:【’很好',’非常好',’完美',’很棒',’很滿意',’很實(shí)用'u'很喜歡',’很耐心',’很不錯(cuò)',’很拉風(fēng)',’很負(fù)責(zé)','非常棒',’十分滿意',’非常滿意',’滿分',’很贊',’非常實(shí)惠’,’很耐用’】。作為首次評論用這樣絕對的詞匯是很有可能是刷單買家評論。接著來分析剔除刷單買家評論、絕對好評客戶后的詞云圖:1、評論關(guān)注的還是公里數(shù)、續(xù)航能力2、找到好評詞匯【很快】【方便】【好評】【速度】【折疊】【喜歡】,優(yōu)點(diǎn)詞匯很少3、找到差評詞匯【壞了】【螺絲】【剎車】【差評】4、好評都是沒有從質(zhì)量出發(fā)的,差評都是質(zhì)量問題5、從這里無法確定買還是不買第五個(gè)文檔是生成的評價(jià)word文檔,是分析的結(jié)果文檔,包含各種分析結(jié)果。導(dǎo)航分析結(jié)果-缺腳岫據(jù)戶占淡:MSS%做曙單痘富怦土.物M將前面的各個(gè)圖表都輸入到word文檔上。里面有一個(gè)非常重要的指標(biāo)項(xiàng)可以用來判斷買還是不買?皿HWK-dS-JlKfrWAEmWT-kM5-W-LI就是重復(fù)評論(刷單)用戶占比、扣除刷單后差評率、絕對好評率三項(xiàng)指標(biāo)。在重復(fù)評論(刷單)用戶占比24.55%、絕對好評為37.32%的情況下,差評率仍然高達(dá)14.86顯然不值得買。這里寫的算法都是對單個(gè)商品就行分析的,沒有對商品群分析,所以結(jié)果不是完美。比如從商品群的評價(jià)庫提取常用的評價(jià)詞匯和語句,就行更細(xì)的評價(jià)分類,和重點(diǎn)的分詞詞匯,這樣詞云圖的結(jié)果會(huì)更明顯。再比如刷單買家的識別,如果我們有很多商品的話就可以通過買家的購買頻率識別是不是刷單買家了,下面是三家電動(dòng)滑板車的刷單買家統(tǒng)計(jì):商品1、/item.htm?spm=a1z0d.6639537.1997196601.4.NLuedO&id=527262264900用戶ID評論溟數(shù)』t*即W5J1**3

用戶ID評論溟數(shù)』t*即W5J1**3商品2、/item.htm?id=532591496697&spm=a1z0k.7385993.1997994373.d4919385.CRvKEJ&_u=t2dmg8j26111I十I■■—-■f-■用戶[Dp評論次教尸t***2Jt*機(jī)*]#1t*沖*9j切t***3』22p115口14r申叮jt***5」12^葉申*7j10pl心t?“弘10^葉5】卯[***3^j曲商品3、/item.htm?spm=a230r.1.14.22.CPs6lj&id=534388747823&ns=1&abbucket=10用戶ID評論次教口t卓第*]戶31^t***2=33316。t***5>14ft率*中9j12^t***0=IN1141官114t***7|j1gV&qm9+w***8w***7看了這幾副圖后,是不是感覺刷單的還是那幾個(gè)人啊。哈哈,廢話不說了,直接貼上分析代碼#coding=utf-8importosimporturllib2importjiebafromrandomimportrandintimportpandasaspdimporttimeimportjsonimportmathimporttypesimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudimportnumpyfromdocximportDocumentfromdocx.sharedimportInches#importsys#reload(sys)#sys.setdefaultencoding('utf-8')#差評定義詞匯mywords=[u'太差',u'材料差',u'各種問題',u'出現(xiàn)問題',u'質(zhì)量差',u'坑人',u'很差',u'不滿意',u'冒牌',u'假的',u'服務(wù)差',u'毛病'\,u'非常差',u'廢物',u'垃圾',u'破爛',u'不值',u'各種問題',u'差評',u'壞的',u'壞了’,u'爛了’口'無良',u'騙子',u'欺騙',\u'不達(dá)標(biāo)',u'出問題',u'特差',u'上當(dāng)',u'不能用',u'報(bào)廢',u'殘次',u'差勁',u'坑爹',u'太黑',u'不要買',u'后悔',u'有多差',u'被坑']#絕對好評goodwords=[u'很好',u'非常好',u'完美',u'很棒',u'很滿意',u'很實(shí)用',u'很喜歡'\,u'很耐心',u'很不錯(cuò)',u'很拉風(fēng)',u'很負(fù)責(zé)',u'非常棒',\u'十分滿意',u'非常滿意',u'滿分',u'很贊',u'非常實(shí)惠',u'很耐用']defgetItemId(url):uid=url[url.find('id=')+3:url.find('id=')+18]ifuid.find('&')>0:itemid=uid[0:uid.find('&')]else:itemid=uidreturnitemiddefgetRedf(url):#將list數(shù)據(jù)轉(zhuǎn)換relist=[]#printurltry:content=json.loads(urllib2.urlopen(url).read().replace('〃rateDetail〃:','').replace('<b>','').replace('</b>',''),'gbk')#gb18030比gbk含更多字符except:printurl,'json解析錯(cuò)誤’returnpd.DataFrame(),99ifcontent.has_key(u'rateList'):hasprice=content[u'rateList'][0][u'attributesMap'].has_key('t_payTime')foriinxrange(len(content[u'rateList'])):iftype(content['rateList'][i]['appendComment'])istypes.DictType:ifhasprice==True:relist.append((content[u'rateList'][i]['displayUserNick'],content[u'rateList'][i]['rateContent'],content[u'rateList'][i]['rateDate']\python抓取淘寶商品評論并分詞分析,content[u'rateList'][i][u'attributesMap']['t_payTime'],content[u'rateList'][i][u'attributesMap']['t_detailPrice'],content[u'rateList'][i][u'attributesMap']['t_buyAmount']\,content[u'rateList'][i][u'appendComment'][u'commentTime'],content[u'rateList'][i][u'appendComment'][u'content']))else:relist.append((content[u'rateList'][i]['displayUserNick'],content[u'rateList'][i]['rateContent'],content[u'rateList'][i]['rateDate']\,content[u'rateList'][i]['gmtCreateTime'],0,1\,content[u'rateList'][i][u'appendComment'][u'commentTime'],content[u'rateList'][i][u'appendComment'][u'content']))else:ifhasprice==True:relist.append((content[u'rateList'][i]['displayUserNick'],content[u'rateList'][i]['rateContent'],content[u'rateList'][i]['rateDate']\,content[u'rateList'][i][u'attributesMap']['t_payTime'],content[u'rateList'][i][u'attributesMap']['t_detailPrice'],content[u'rateList'][i][u'attributesMap']['t_buyAmount']\,u'',numpy.nan))else:relist.append((content[u'rateList'][i]['displayUserNick'],content[u'rateList'][i]['rateContent'],content[u'rateList'][i]['rateDate']\,content[u'rateList'][i]['gmtCreateTime'],0,1,u'',numpy.nan))returnpd.DataFrame(relist),content['paginator'][TastPage']撮大頁數(shù)else:time.sleep(5)print'等待5毫秒:’#,urlreturngetRedf(url)defgetDeatail(itemid='534388747823'):baseurl=〃/list_detail_rate.htm?itemId={0}&sellerId={1}&order=1¤tPage={2}"url=baseurl.format(itemid,randint(100000000,700000000),1)mydf,pages=getRedf(url)#mydf=pd.concat(mydf,first)#pages=totals/20+1;p=2while(p<=pages):url=baseurl.format(itemid,randint(100000000,700000000),p)print'正在讀取第{0}頁'.format(p)p=p+1tpdf,n=getRedf(url)mydf=pd.concat([mydf,tpdf])mydf.columns=['user','contents','datetime','t_payTime','t_detailPrice','t_buyAmount','appendtime','appendcontents']returnmydfdefgetSeg(scarydata):#獲取分詞的DataFrame注意修改一些文件路徑afterseg=[]foruinmywords:jieba.add_word(u)stopwords={}.fromkeys([line.rstrip().decode('utf-8')forlineinopen('E:/360yun/myprog/outwords.txt')])#如果確保唯一可以直接用liststopwords[u'不錯(cuò)']='0'stopwords[u'車子']='0'fori,tinscarydata.iterrows():tp=t[0].replace('<b>','').replace('</b>','')segs=jieba.cut(tp)forseginsegs:iflen(seg)>1andsegnotinstopwords.keys():afterseg.append((tp,seg))userwords=pd.DataFrame(afterseg)userwords.columns=['user','words']returnuserwordsdefwcfigure(wordsdf,path=r,test.jpg,,mytitle=,,):#0云圖圖,傳入dataframe,保存文件路徑和名字wdcounts.head(2000).itertuples(index=False)wordcloud=WordCloud(font_path='c:\windows\fonts\STCAIYUN.TTF',background_color=〃white〃,margin=5,width=1800,height=1000)#必須要加載文字體不然中文亂碼#printsegStat.head(100).itertuples(index=False)wordcloud=wordcloud.fit_words(wordsdf.itertuples(index=False))plt.figure(num=None,figsize=(25,16),dpi=8,facecolor='w',edgecolor='k')plt.imshow(wordcloud)plt.axis(〃off〃)#plt.title(mytitle)plt.savefig(path)plt.show()plt.close()defrefind((x,y)):ifx>15000orx<20:returnFalseelse:returnydeffindBad(words):flag=False#printtype(words)#ifisNan()words=words.decode('utf-8')forxinmywords:#x=x.encode('utf-8')ifxinwords:flag=TruebreakreturnflagdeffindBest(words):flag=False#ifisNan()words=words.decode('utf-8')forxingoodwords:#x=x.encode('utf-8')ifxinwords:flag=Truebreakreturnflag#url='/item.htm?spm=a1z0d.6639537.1997196601.4.NLuedO&id=527262264900'#url='/item.htm?id=532591496697&spm=a1z0k.7385993.1997994373.d4919385.CRvKEJ&_u=t2dmg8j26111'url='/item.htm?spm=a230r.1.14.22.CPs6lj&id=534388747823&ns=1&abbucket=10'itemid=getItemId(url)ifos.path.exists(itemid):#當(dāng)前路徑shous=os.getcwd()查找是否曾經(jīng)抓取數(shù)據(jù)mydata=pd.read_csv(itemid)else:mydata=getDeatail(itemid)mydata.to_csv(itemid,encoding='utf-8',index=False)mydata=pd.read_csv(itemid)mydata['paytime']=mydata['t_payTime'].apply(lambdax:time.strftime('%Y-%m-%d%H:%M:%S',time.localtime(x/1000)))mydata['hours']=mydata['datetime'].str[11:13]mydata['price']=mydata['t_detailPrice']/mydata['t_buyAmount']delmydata['t_payTime'],mydata['t_detailPrice'],mydata['t_buyAmount']mydata['dates']=mydata['paytime'].str[0:10]groupby_date=mydata.groupby(by=[u'dates'])[u'appendcontents'].agg({u'總評論數(shù)’:numpy.size,u'追評數(shù)':'count'})mydata=mydata.fillna('')mydata['badcontents']=mydata['contents'].apply(findBad)|mydata['appendcontents'].apply(findBad)mydata['best']=mydata['contents'].apply(findBest)|mydata['appendcontents'].apply(findBest)mydata['datetime']=pd.to_datetime(mydata['datetime'])mydata['appendtime']=pd.to_datetime(mydata['appendtime'])mydata['difftime']=(mydata['appendtime']-mydata['datetime']).apply(lambdax:pd.isnull(x)and200orx.total_seconds())#追評相差天數(shù)mydata['wordsnum']=((mydata['contents'].str.len().fillna(0)+mydata['appendcontents'].str.len().fillna(0))/3).apply(lambdax:math.ceil(x))#apply對每個(gè)元素操作##mydata['specialwords']=mydata['contents'].str.count('<')tp2=mydata.groupby(by=[u'user'])[u'user'].agg({u〃計(jì)數(shù)〃:numpy.size})\.sort_values(by=[u〃計(jì)數(shù)〃],ascending=False).reset_index()baduser=list(tp2[tp2[u'計(jì)數(shù)']>3]['user'])#badlist=((mydata['difftime']<100000)&(mydata['wordsnum']<100))#|(mydata['user'].isin(baduser))mydata['badflag']=(((mydata['difftime']<36000)&(mydata['difftime']>200))|(mydata['user'].isin(baduser))|(mydata['best']==True)|(mydata['wordsnum']>120))&(mydata['badcontents']==False)#|(~badlist)#|(~mydata['user'].isin(baduser))tp=mydata[mydata['contents']>''].groupby(by=[u'contents'])[u'contents'].agg({u'計(jì)數(shù)〃:numpy.size})\python抓取淘寶商品評論并分詞分析.sort_values(by=[u"計(jì)數(shù)〃],ascending=False).reset_index()groupby_hour=mydata.groupby(by=[u'hours'])[u'hours'].agg({u〃評論數(shù)〃:numpy.size})groupby_date[u'平均成交價(jià)']=mydata.groupby(by=[u'dates'])[u'price'].mean()grouby_badflag=mydata.groupby(u'badflag')[u'badflag'].agg({u〃評論數(shù)〃:numpy.size})dup=sum(tp2[tp2[u'計(jì)數(shù)']>3][u'計(jì)數(shù)'])*1.00/mydata.shape[0]#用戶刷單數(shù)#mydata['xxx']=mydata['contents'].apply(lambdax:x.find('不錯(cuò)')>0andTrueorFalse)badRate=mydata[mydata['badcontents']==True].shape[0]/float(mydata.shape[0]-sum(tp2[tp2[u'計(jì)數(shù)']>3][u'計(jì)數(shù)']))bestRate=mydata[mydata['best']==True].shape[0]/float(mydata.shape[0])outprint='重復(fù)評論(刷單)用戶占比:{0}%;扣除刷單后差評率:{1}%;絕對好評率:{2}%'.format(format(dup*100,'.2f'),format(badRate*100,'.2f'),format(bestRate*100,'.2f'))groupby_date.plot(kind=Tine',color=['g','r','b'],title=u'按日匯總評論',figsize=(10,5),secondary_y=u'平均成交價(jià)')#.plt.savefig(u'{0}日匯總統(tǒng)計(jì)圖.jpg'.format(itemid))bad=mydata[mydata['badcontents']==True]['contents'].dropna().append(mydata[mydata['badcontents']==True]['appendcontents'].dropna())bad=pd.DataFrame(bad)userwords=getSeg(bad)wdcounts=userwords.groupby('words').count().sort_values(by=['user'],ascending=False).reset_index()#.head(6000)wcfigure(wdcounts.head(2000),'{0}bad.jpg'.format(itemid),mytitle=u'')#非刷單用評價(jià)good

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論