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


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

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

 

思路

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

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

 

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

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

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

開始寫代碼

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

 1 import requests
 2 import re
 3 import time
 4 
 5 def get_comment(itemid):
 6     i = 1#開始頁碼
 7     d = []#構建一個列表用於判斷是否繼續循環
 8     lis = []#放置抓取到的內容
 9     while i:
10         #構建循環用的url
11         url = 'https://rate.tmall.com/list_detail_rate.htm?itemId={}&order=3&sellerId=1914459560&currentPage={}'.format(itemid,str(i))
12         html = requests.get(url).text#獲取相關內容的源代碼
13         pl = re.findall(r'"rateContent":"(.*?)","rateDate"',html)#評論抓取
14         dat = re.findall(r'"rateDate":"(.*?)","reply"',html)#評論時間抓取
15         if dat == d or pl ==[]:#判斷是否重復或者是否存在評論
16             print('==============================')
17             return lis #跳出循環並返回值
18         else:
19             try:
20                 d = dat#沒有重復則將評論時間賦值給d,用於下次循環判斷
21             except IndexError as e:
22                 continue#出現該錯誤則跳出循環,進行下一次
23         print("第%d頁評論"%i,pl)#打印評論內容
24         lis.append(pl)
25         i += 1
26         time.sleep(2)#訪問間隔

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

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

 

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

然后開始寫主函數,保存到文檔!運行結果如下

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

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

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

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

 最后

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

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

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM