Python數(shù)據(jù)爬取實(shí)例--爬取某寶評(píng)論

一、前言

淘寶的反爬比較嚴(yán)格掘托,且淘寶協(xié)議好像不允許爬取它的評(píng)論,我查了一下好像也不建議直接用自己的淘寶號(hào)去爬燃凇(好像有封號(hào)風(fēng)險(xiǎn))闪盔,我在測(cè)試的時(shí)候弯院,可能是太頻繁了淘寶賬號(hào)被強(qiáng)制退了并提醒了用戶協(xié)議。話不多說(shuō)泪掀,我們直接來(lái)看一下思路和代碼听绳。

二、實(shí)例

1异赫、思路

因?yàn)樘詫毞磁辣容^嚴(yán)重椅挣,所以該代碼需要登錄淘寶賬號(hào)模仿人為瀏覽復(fù)制評(píng)論,且需要提供較為詳細(xì)的URL塔拳,還要提供cookie等鼠证。

2、過(guò)程

明確自己所要找的商品評(píng)論靠抑,進(jìn)入相應(yīng)的商品中量九,我以小米手機(jī)為例。
我這里進(jìn)入了小米旗艦店的米10的評(píng)論區(qū)中颂碧。

image.png

這個(gè)時(shí)候荠列,打開開發(fā)者模式(按f12)
image.png

第一步點(diǎn)擊圖中的放大鏡,如果4中的搜索框有內(nèi)容载城,則按一下步驟2的那個(gè)禁止符號(hào)清除搜索框中的內(nèi)容肌似,要是原本就沒(méi)有內(nèi)容就跳過(guò)第二步直接點(diǎn)擊3中的具體評(píng)論。
注:這里一定要先進(jìn)入開發(fā)者模式再去點(diǎn)擊評(píng)論个曙,如果是先點(diǎn)擊具體評(píng)論在打開開發(fā)者模式復(fù)制黏貼锈嫩,會(huì)搜索不到內(nèi)容的,也就找不到對(duì)應(yīng)的URL等參數(shù)了?寻帷:舸纭!
image.png

選擇一條評(píng)論復(fù)制猴贰,然后黏貼到4中的搜索框去对雪,點(diǎn)一下5,或者按一下回車鍵米绕,出現(xiàn)以下內(nèi)容瑟捣。
image.png

點(diǎn)擊畫紅線的地方。


image.png

出現(xiàn)上面的頁(yè)面點(diǎn)到headers去


image.png

這里我們看到了頁(yè)面的URL栅干,我們往下拉還可以看見(jiàn)cookie迈套,referer,user-agent碱鳞,要將這四個(gè)找出來(lái)分別黏貼在下面的代碼中桑李。注意上圖畫紅線的地方,在下面會(huì)進(jìn)行特別的說(shuō)明。
3贵白、代碼
import pandas as pd
import requests
import re
import time
data_list = []
#爬取的頁(yè)數(shù)為1到19頁(yè)
for i in range(1,20,1):
    print("正在爬取第" + str(i) + "頁(yè)")
    #構(gòu)建訪問(wèn)的網(wǎng)址率拒,這個(gè)網(wǎng)址可有講究了
    first = 'https://rate.tmall.com/list_detail_rate.htm?itemId=611224893062&spuId=1526565904&sellerId=1714128138&order=3&currentPage='
    last = '&append=0&content=1&tagId=20101023&posi=1&picture=0&groupId=&ua=098%23E1hvwQvbvPhvUvCkvvvvvjiPnL5ptjEvnLqU1jljPmP9tjtPPLsp1jnmnLs9QjnhRphvChCvvvmCvpviflKcvCqw7Di4cMc5MPC46HdPzg9umWTMsd%2BL4OU2yqeWkeHXvK8WFfKjvpvhphhvv8wCvvBvpvpZRphvChCvvvvPvpvhvv2MMQhCvvXvovvvvvvEvpCWpGZjv8WpwHQDNr3l5dUfb161D764d5lPwymQD40wjovfBdmxdX3Qbc6OfakKDzEjaDuxfXkOjoCABYoO%2Bul1pB61D70Oe169PDrr1UyCvvXmp99he1AivpvUphvhsf0xXDTtvpvIphvvvvvvphCvpCphvvCvIyCvjvUvvhBGphvwv9vvBhEvpCQmvvChp9%3D%3D&itemPropertyId=&itemPropertyIndex=&userPropertyId=&userPropertyIndex=&rateQuery=&location=&needFold=0&_ksTS=1595499293797_3730&callback=jsonp3731'
    url = first + str(i) + last
    #訪問(wèn)的頭文件,還帶這個(gè)cookie
    headers ={
        # 用的哪個(gè)瀏覽器
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36',
        # 從哪個(gè)頁(yè)面發(fā)出的數(shù)據(jù)申請(qǐng)禁荒,每個(gè)網(wǎng)站可能略有不同
        'referer': 'https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w15914064-15567552165.16.55e448feb3oh69&id=611224893062&scene=taobao_shop&sku_properties=10004:7169121965;5919063:6536025;12304035:946237073',
        # 哪個(gè)用戶想要看數(shù)據(jù)猬膨,是游客還是注冊(cè)用戶,建議使用登錄后的cookie
        'cookie':'cna=4WV4F30//QACAXjl/xer2+AZ; _m_h5_tk=a79ba70f915d9ba3ac924993f793e2d9_1595438320858; _m_h5_tk_enc=dcaba3d7058acdf78f1333d3c2d09fb7; sm4=440500; lid=yzfzf8342; enc=GtTHaCYoIyS1Mrx%2FljjVSyXnBQUpSdD49%2BI27a1U08Cm%2FHNNeNt82Sa7RZnWqxEUozAuCF19ISBHDVpQK%2Frgvw%3D%3D; sgcookie=ExKWIC%2FrOlfUjMlWR8Gz1; t=f3bcc8d7f1f91e3e0f43a493d3fedaf5; uc3=lg2=UIHiLt3xD8xYTw%3D%3D&vt3=F8dBxGyhBGoK%2F%2BpK6CI%3D&nk2=GhEd8Ku88aZW&id2=UNQ2me8UbNu12g%3D%3D; tracknick=yzfzf8342; uc4=nk4=0%40GJ2QH2OyEy7usffj2261IhUpjU0%3D&id4=0%40UgP9omVfbD01hXa5NKpMgzuMLbj7; lgc=yzfzf8342; _tb_token_=3417a870bd554; cookie2=15bebf99545ebefea6966d68d22d9fa0; l=eBSgfFqlONScLUA8BO5alurza77tUFOXDVVzaNbMiIncC6bFh8pXgb-QK7-e2QtRR8XcGJSw4kkZIset6er4JyMfoTB7K9cdvdH2Cef..; isg=BKmpm2Ac0sEUB-509iyZubs6uFUDdp2oFB45U0uDcgGUEvkkxMdaeBNE1LYktzXg'
    }
    #嘗試獲取數(shù)據(jù)(這里的數(shù)據(jù)應(yīng)該是從json里面獲取的)
    try:
        data = requests.get(url,headers = headers).text
        time.sleep(10)#設(shè)置睡眠時(shí)間,模擬人的瀏覽
        result = re.findall('rateContent":"(.*?)"fromMall"',data)
        data_list.extend(result)
    except:
        print("本頁(yè)爬取失敗")
df = pd.DataFrame()
df["評(píng)論"] = data_list
df.to_excel("評(píng)論_匯總1.xlsx")

cookie呛伴,referer勃痴,user-agent這三個(gè)直接找到復(fù)制黏貼就好了,但是URL我們需要分為兩部分磷蜀,分隔的地方就在上面圖中畫紅線處召耘。將其分為first和last黏貼進(jìn)去。
為什么要這這里分隔呢褐隆?
我們要明白污它,我們爬取的是多頁(yè)評(píng)論,而在淘寶中評(píng)論頁(yè)面是局部頁(yè)面庶弃,currentPage這個(gè)參數(shù)指的是當(dāng)前頁(yè)衫贬,我們可以看見(jiàn)上面截圖中它的值為1,因?yàn)槲以诘谝豁?yè)評(píng)論中歇攻,可以注意到代碼中在first后面的”currentPage=”沒(méi)有具體的值固惯,它的值在下面代碼url = first + str(i) + last,我用str(i)賦值了缴守。
【注:上面用到了requests庫(kù)來(lái)獲取頁(yè)面信息葬毫,requests庫(kù)的使用可以參考這篇文章。還利用了正則化表達(dá)式來(lái)提取評(píng)論屡穗,大家如果將爬取的最初始結(jié)果data輸出會(huì)看到一堆亂七八糟的符號(hào)文字等贴捡,仔細(xì)看會(huì)發(fā)現(xiàn)評(píng)論都是在"rateContent"和"fromMall"之間,所以用正則表達(dá)式將評(píng)論從爬取的內(nèi)容中提取出來(lái)村砂±谜】
最后得到的結(jié)果如下圖:

爬取結(jié)果.png

三、制作詞云

詞云的制作础废,比較簡(jiǎn)單汛骂,一些解釋我已經(jīng)備注在代碼中了,所以直接看代碼就好评腺。

import jieba
import pandas as pd
from wordcloud import WordCloud

#讀取文件帘瞭,如果是xlsx則用utf-8編碼,若是CSV文件則用gbk編碼
data = pd.read_excel('評(píng)論_匯總.xlsx',encoding='utf-8')

text = ''
for i in range(len(data)):
    text += data['評(píng)論'][i]
word = jieba.cut(text,cut_all=True)    #加了cut_all為全模式有多余的切分 

#jieba庫(kù)分詞后的結(jié)果為迭代器蒿讥,所以用join()方式打開,也可以用循環(huán)图张。
word_space_list = ' '.join(word)

#添加停用詞锋拖,停用詞少可以直接寫一個(gè)字典,多的話可以寫在txt文件中讀取祸轮,我采用的是txt文件

with open('stopword.txt',encoding='utf-8') as f:
    s=f.read()
'''
#切片方法1
exclude=[]
exclude=s.split() #將字符串切片

'''
#切片方法2
exclude=jieba.cut(s,cut_all=True)
exclude=' '.join(exclude)
#print(exclude)

#生成詞云
wc = WordCloud(font_path='simhei.ttf',#設(shè)置字體
               background_color='white',#背景顏色
               width=1000,#寬度
               height=600,#高度
               max_words=100,#最大顯示字?jǐn)?shù)
               stopwords=exclude#設(shè)置停用詞
               ).generate(word_space_list)

wc.to_file('詞云2.png')

當(dāng)然這只是最簡(jiǎn)單的詞云,Wordcloud中的許多參數(shù)我都是使用默認(rèn)侥钳,只規(guī)定了幾個(gè)比較常見(jiàn)的參數(shù)适袜,大家如果有需求可以自己設(shè)定。
上面的代碼中有兩種對(duì)停用詞的切片方法舷夺,如果你的停用詞是一些詞組則用第一種比較好苦酱,如果是句子用第二種切片比較好。


詞云2.png

這就是運(yùn)行后的結(jié)果给猾。

參考:https://blog.csdn.net/z463544804/article/details/106797987?utm_source=app
https://blog.csdn.net/qq_46614154/article/details/105682101?utm_source=app
https://www.runoob.com/regexp/regexp-syntax.html
https://www.cnblogs.com/wangyinghao/p/10712328.html
https://www.cnblogs.com/liyanyinng/p/10958791.html
https://blog.csdn.net/YJG7D314/article/details/102787844

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末疫萤,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子敢伸,更是在濱河造成了極大的恐慌扯饶,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,607評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件池颈,死亡現(xiàn)場(chǎng)離奇詭異尾序,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)躯砰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,239評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門每币,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人琢歇,你說(shuō)我怎么就攤上這事兰怠。” “怎么了李茫?”我有些...
    開封第一講書人閱讀 164,960評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵揭保,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我涌矢,道長(zhǎng)掖举,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,750評(píng)論 1 294
  • 正文 為了忘掉前任娜庇,我火速辦了婚禮塔次,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘名秀。我一直安慰自己励负,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,764評(píng)論 6 392
  • 文/花漫 我一把揭開白布匕得。 她就那樣靜靜地躺著继榆,像睡著了一般巾表。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上略吨,一...
    開封第一講書人閱讀 51,604評(píng)論 1 305
  • 那天绪抛,我揣著相機(jī)與錄音心剥,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛闹啦,可吹牛的內(nèi)容都是我干的颤难。 我是一名探鬼主播成肘,決...
    沈念sama閱讀 40,347評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼豺裆,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了考榨?” 一聲冷哼從身側(cè)響起跨细,我...
    開封第一講書人閱讀 39,253評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎河质,沒(méi)想到半個(gè)月后冀惭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,702評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡愤诱,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,893評(píng)論 3 336
  • 正文 我和宋清朗相戀三年云头,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片淫半。...
    茶點(diǎn)故事閱讀 40,015評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡溃槐,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出科吭,到底是詐尸還是另有隱情昏滴,我是刑警寧澤,帶...
    沈念sama閱讀 35,734評(píng)論 5 346
  • 正文 年R本政府宣布对人,位于F島的核電站谣殊,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏牺弄。R本人自食惡果不足惜姻几,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,352評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望势告。 院中可真熱鬧蛇捌,春花似錦、人聲如沸咱台。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,934評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)回溺。三九已至春贸,卻和暖如春混萝,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背萍恕。 一陣腳步聲響...
    開封第一講書人閱讀 33,052評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工逸嘀, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人允粤。 一個(gè)月前我還...
    沈念sama閱讀 48,216評(píng)論 3 371
  • 正文 我出身青樓厘熟,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親维哈。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,969評(píng)論 2 355