Python爬蟲,抓取淘寶商品評論內容!

雲飛學程式設計發表於2018-06-24

作為一個資深吃貨,網購各種零食是很頻繁的,但是能否在浩瀚的商品庫中找到合適的東西,就只能參考評論了!今天給大家分享用python做個抓取淘寶商品評論的小爬蟲!

Python爬蟲,抓取淘寶商品評論內容

思路

我們就拿“德州扒雞”做為參考目標吧~!如果想抓其他商品的話,自行更換目標即可!開啟淘寶,搜尋目標,隨便點選一個商品進入,在點選累計評論,開啟F12開發者工具——網路,先清除現有的所有內容,然後點選下一頁評論,在彈出的內容中查詢檔案中開頭為list_detail_rate.htm的html型別,如下圖所示

Python爬蟲,抓取淘寶商品評論內容

這個html中就含有我們需要的內容,左鍵點選然後選擇響應,就可以看到具體響應內容了!

Python爬蟲,抓取淘寶商品評論內容

這裡面是一大串包含我們需要的內容在內的原始碼,如果大家有興趣可以提取內容做成json資料,而我們這裡只需要評論資料,所以,用正則匹配評論部分就可以了!

開始寫程式碼

具體過程就不贅述了,新建一個函式,接受店鋪ID(唯一)作為引數,做一個無限迴圈來翻頁,並以評論時間為判斷是否重複,如果重複則跳出迴圈(return可以直接跳出迴圈),整個函式部分程式碼如下

# -*- coding=utf-8 -*-
#qq群:542110741

import requests
import re
import time

def get_comment(itemid):
    i = 1#開始頁碼
    d = []#構建一個列表用於判斷是否繼續迴圈
    lis = []#放置抓取到的內容
    while i:
        #構建迴圈用的url
        url = `https://rate.tmall.com/list_detail_rate.htm?itemId={}&order=3&sellerId=1914459560&currentPage={}`.format(itemid,str(i))
        html = requests.get(url).text#獲取相關內容的原始碼
        pl = re.findall(r`"rateContent":"(.*?)","rateDate"`,html)#評論抓取
        dat = re.findall(r`"rateDate":"(.*?)","reply"`,html)#評論時間抓取
        if dat == d or pl ==[]:#判斷是否重複或者是否存在評論
            print(`==============================`)
            return lis #跳出迴圈並返回值
        else:
            try:
                d = dat#沒有重複則將評論時間賦值給d,用於下次迴圈判斷
            except IndexError as e:
                continue#出現該錯誤則跳出迴圈,進行下一次
        print("第%d頁評論"%i,pl)#列印評論內容
        lis.append(pl)
        i += 1
        time.sleep(2)#訪問間隔

加入try是因為程式碼一直在抽風的跳出index錯誤,後續還可以改進!

作為一個爬蟲愛好者,必然要加深抓取的廣度的,試著將整個頁面的店鋪ID抓取出來!這次簡單,直接抓到json資料,然後用正則匹配,返回列表,因為時間有限,沒有研究出url翻頁的依據,就只抓取了一頁!

def get_id(kw=`德州扒雞`):
    ```
    只抓了首頁44家店鋪的,沒有抓後面頁面,後續需改進
    ```
    url = `https://s.taobao.com/search?data-key=s&data-value=44&ajax=true&` 
          `_ksTS=1529811793535_1018&callback=jsonp1019&q={}&imgfile=&js=1&` 
          `stats_click=search_radio_all:1&initiative_id=staobaoz_20180624&` 
          `ie=utf8&bcoffset=4&p4ppushleft=1,48`.format(kw)
    html = requests.get(url).text
    id_list = re.findall(r`,"auctionNids":[(.*?)],"ifDoufuAuction"`,html,re.S)[0]
    return id_list.replace(`"`,``).split(`,`)

然後開始寫主函式,儲存到文件!執行結果如下

Python爬蟲,抓取淘寶商品評論內容

Python爬蟲,抓取淘寶商品評論內容

emmm,看評論是可以入手的!哈哈!

Python爬蟲,抓取淘寶商品評論內容

最後

想說幾點,一個是自己寫個小爬蟲玩玩可以,做分析也行,但是務必切記不要外傳擴散,很容易進坑!二是淘寶的反爬其實也不是很難,比如上面的爬蟲,並沒有做反爬措施,大家可以拿這個來練練手,記得加入sleep就可以,不要給對方伺服器造成壓力為最好!

程式碼寫的不好,各路高手請見諒!歡迎大家來一起交流、學習!

Python爬蟲,抓取淘寶商品評論內容


相關文章