用python爬取天貓商品評論(0)

? 由于日后實(shí)習(xí)需要链蕊,新年假期在家里有空寫了個(gè)抓取天mao評論的程序,并用python的snownlp模塊進(jìn)行簡單的情感分析,由于本人剛接觸python例嘱,項(xiàng)目可能有許多不足,請大家諒解宁舰!具體流程如下:

0.主要流程

0.數(shù)據(jù)采集

0.?目標(biāo)網(wǎng)址獲取

首先拼卵,獲取自己要爬取的商品網(wǎng)頁。如圖:

這里用iPhone x的商品做樣例(博主目前使用的手機(jī)是小米3蛮艰,窮鬼啊有沒有腋腮!)。因?yàn)榧虞d評論的頁面用js封裝起來了。因此需要用到瀏覽器開發(fā)者工具獲取保存評論的頁面即寡,直接按F12打開徊哑。如圖:

在NETwork//js目錄下有一個(gè)形如上圖的網(wǎng)址(巨長無比呀),細(xì)心發(fā)現(xiàn)會有一個(gè)page=1的字段聪富,這個(gè)是控制不同頁數(shù)的關(guān)鍵字莺丑!因此我們只需要改變page的值就能爬取不同頁面的內(nèi)容了!墩蔓!具體代碼如下:

# -*- coding: utf-8 -*-

import urllib.request

import json

import time

import re

import pymysql

def find_message(url,x,j):

? ? print('已有' + str(x) + '頁無法獲取')

? ? #讀取網(wǎng)頁數(shù)據(jù)

? ? html = urllib.request.urlopen(url).read().decode('gbk')

? ? #篩選json格式數(shù)據(jù)

? ? jsondata=re.search('^[^(]*?\((.*)\)[^)]*$', html).group(1)

? ? #用json加載數(shù)據(jù)

? ? data = json.loads(jsondata)

? ? #數(shù)據(jù)保存在變量里

? ? conn = pymysql.connect(host='localhost', port=3306, user='root', passwd='1234', db='pysql', charset='utf8')

? ? cur = conn.cursor()

? ? # 連接mysql

? ? print('連接成功!!!!')

? ? try:

? ? ? ? for i in range(0, len(data['rateDetail']['rateList'])):

? ? ? ? ? ? #print(str(i + 1) + data['rateDetail']['rateList'][i])

? ? ? ? ? ? name = data['rateDetail']['rateList'][i]['displayUserNick']

? ? ? ? ? ? #處理過的用戶名

? ? ? ? ? ? content = data['rateDetail']['rateList'][i]['rateContent']

? ? ? ? ? ? #當(dāng)天評論

? ? ? ? ? ? time = data['rateDetail']['rateList'][i]['rateDate']

? ? ? ? ? ? # 評論日期

? ? ? ? ? ? iphonetype = data['rateDetail']['rateList'][i]['auctionSku']

? ? ? ? ? ? #機(jī)型

? ? ? ? ? ? appenddays = data['rateDetail']['rateList'][i]['appendComment']['days']

? ? ? ? ? ? #追加評論的天數(shù)

? ? ? ? ? ? appendtime=data['rateDetail']['rateList'][i]['appendComment']['commentTime']

? ? ? ? ? ? #追加評論的時(shí)間

? ? ? ? ? ? appendcontent=data['rateDetail']['rateList'][i]['appendComment']['content']

? ? ? ? ? ? #追加評論的內(nèi)容

? ? ? ? ? ? cur.execute("insert into iphonex(用戶名,當(dāng)天評論,當(dāng)天時(shí)間,機(jī)型,追加天數(shù),追加時(shí)間,追加評論) values (\"%s\",\"%s\",\"%s\",\"%s\",%d,\"%s\",\"%s\")"%(str(name),str(content),str(time),str(iphonetype),int(appenddays),str(appendtime),str(appendcontent)))

? ? ? ? print(str(j+1)+"頁數(shù)據(jù)已經(jīng)保存")

? ? ? ? #數(shù)據(jù)插入mysql

? ? ? ? return x

? ? except BaseException:

? ? ? ? x+=1

? ? ? ? print('已有'+str(x)+'頁無法獲取')

? ? ? ? print("####此頁無法獲取####")

? ? ? ? return x

#主函數(shù)

x=0

for j in range(1,50):

? ? try:

? ? ? ? print("正在獲取第{}頁評論數(shù)據(jù)!".format(j))

? ? ? ? url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=560257961625&spuId=893336129&sellerId=1917047079&order=3¤tPage=' + str(j) +'&append=1&' \

? ? ? ? ? ? ? 'content=1&tagId=&posi=&picture=0&ua=098%23E1hvLpvZv7UvUpCkvvvvvjiPPLLhzjtbPscOsjljPmPhljlUR25Z0jlURFSWljn8RFyCvvpvvvvvdphvmpvhOOhvvv2' \

? ? ? ? ? ? ? 'psOhCvv147GzzgY147Dunrn%2FrvpvEvvkj9oIuvWLMdphvmpvWPgEboQvgfOhCvv14cOjzyC147DikWn%2Fjvpvhvvpvv8wCvvpvvUmmRphvCvvvvvvPvpvhMMGvvvyCvhQpm' \

? ? ? ? ? ? ? 'kwvCszEDajxRLa9mNLhQnmOjVQ4S47B9CkaU6bnDO2hV36AxYjxAfyp%2B3%2BuQjc60fJ6EvLv%2BExreE9aUExr0jZ7%2B3%2Buzjc61C4Auphvmvvv9bvT4yc7kphvC99v' \

? ? ? ? ? ? ? 'vOClpbyCvm9vvvvvphvvvvvv96Cvpvs4vvm2phCvhRvvvUnvphvppvvv96CvpCCvvphvC9vhvvCvp86Cvvyv224CeiIvHUytvpvhvvvvv86CvvyvhEKCFgGv1WQtvpvhvvvvvUh' \

? ? ? ? ? ? ? 'CvmDz7GczTr147Dup2nGD1TAqsd%2FoU0dieGd8S6STvI8byIKB9OHmvtmWyv%3D%3D&isg=BAMDf2HuXRdECBGLXKb6oZc2ksdt0Jbc5_lgETXg6mLa9CIWvUsTCypmaoS61O-y&itemPropertyId=&itemPropertyIndex=&userProp' \

? ? ? ? ? ? ? 'ertyId=&userPropertyIndex=&rateQuery=&location=&needFold=0&_ksTS=1518175553706_1200&callback=jsonp1201'

? ? ? ? x=find_message(url,x,j)

? ? ? ? time.sleep(3)

? ? ? ? # 設(shè)置時(shí)間間隔(這個(gè)不要忽視)

? ? except BaseException:

? ? ? ? continue

說幾點(diǎn)代碼的問題:

js網(wǎng)頁效果圖如下:

jsondata=re.search('^[^(]*?\((.*)\)[^)]*$', html).group(1)

由網(wǎng)頁效果圖可知梢莽,評論信息是保存在jsonp719()里面的,因此需要用正則表達(dá)式獲燃榕()里面的內(nèi)容昏名,去除無用部分,然后用json.loads得到字典data阵面。

如上圖轻局,用pycharm里面的json格式打開輸出的數(shù)據(jù)data可以得到想要的數(shù)據(jù)在字典中位置。

在data = json.loads(jsondata)后面加print(data)輸出原數(shù)據(jù)會發(fā)現(xiàn)一些問題:如下

打開圖中url得到:

沒錯(cuò)這個(gè)就是securitymatrix(下篇文章介紹)膜钓,這樣會有一些頁面無法獲取一些頁面嗽交,所以需要設(shè)置?time.sleep(3),這里用參數(shù)3颂斜,其實(shí)最好用random()選隨機(jī)數(shù)3到5的參數(shù)(這樣T貓機(jī)器人沒那么容易發(fā)現(xiàn)你也是它的同類夫壁,頁面丟失率會降低,當(dāng)然你也可以寫個(gè)函數(shù)重新獲取丟失的頁面)?

運(yùn)行結(jié)果:

由于丟失了2頁數(shù)據(jù)沃疮,所以剩下960條記錄(50頁每頁20條)

好了爬取工作完成了盒让!

1.?爬蟲框架選用

本來打算是用python的selenium模塊模擬登錄爬取的但是由于天貓的securitymatrix安全系統(tǒng)()比較強(qiáng)大,博主還沒有能力破解司蔬,這里只能使用自己寫的流程用request庫抓取網(wǎng)頁邑茄。

當(dāng)然你也可以選擇python的scrapy模塊爬取,這個(gè)看個(gè)人喜好吧俊啼!核心思路是不變的肺缕。

好了爬蟲部分寫到這里了,后面的內(nèi)容以后會更新授帕!由于博主還是小白同木,寫的代碼,特別是異常處理寫的不是很規(guī)范跛十。希望各位大師指點(diǎn)彤路。

聽說帥的人都點(diǎn)贊和打賞了!

? 那么你帥嗎芥映?洲尊?远豺??^-^

? ? 還有歡迎各位留言交流N豚帧Gぁ!

? ? ? 預(yù)祝2018姆吭,新年快樂榛做!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市内狸,隨后出現(xiàn)的幾起案子检眯,更是在濱河造成了極大的恐慌,老刑警劉巖昆淡,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锰瘸,死亡現(xiàn)場離奇詭異,居然都是意外死亡昂灵,警方通過查閱死者的電腦和手機(jī)避凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眨补,“玉大人管削,你說我怎么就攤上這事〕怕荩” “怎么了含思?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長甘晤。 經(jīng)常有香客問我含潘,道長,這世上最難降的妖魔是什么线婚? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任遏弱,我火速辦了婚禮,結(jié)果婚禮上塞弊,老公的妹妹穿的比我還像新娘漱逸。我一直安慰自己,他們只是感情好游沿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布饰抒。 她就那樣靜靜地躺著,像睡著了一般奏候。 火紅的嫁衣襯著肌膚如雪循集。 梳的紋絲不亂的頭發(fā)上唇敞,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天蔗草,我揣著相機(jī)與錄音咒彤,去河邊找鬼。 笑死咒精,一個(gè)胖子當(dāng)著我的面吹牛镶柱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播模叙,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼歇拆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了范咨?” 一聲冷哼從身側(cè)響起故觅,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎渠啊,沒想到半個(gè)月后输吏,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡替蛉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年贯溅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片躲查。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡它浅,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出镣煮,到底是詐尸還是另有隱情姐霍,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布怎静,位于F島的核電站邮弹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏蚓聘。R本人自食惡果不足惜腌乡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望夜牡。 院中可真熱鬧与纽,春花似錦、人聲如沸塘装。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蹦肴。三九已至僚碎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阴幌,已是汗流浹背勺阐。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工卷中, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人渊抽。 一個(gè)月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓蟆豫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親懒闷。 傳聞我的和親對象是個(gè)殘疾皇子十减,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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