python爬虫淘宝评论_Python爬虫,抓取淘宝商品评论内容
作為一個資深吃貨,網購各種零食是很頻繁的,但是能否在浩瀚的商品庫中找到合適的東西,就只能參考評論了!今天給大家分享用python做個抓取淘寶商品評論的小爬蟲!
思路
我們就拿“德州扒雞”做為參考目標吧~!如果想抓其他商品的話,自行更換目標即可!打開淘寶,搜索目標,隨便點擊一個商品進入,在點擊累計評論,打開F12開發者工具——網絡,先清除現有的所有內容,然后點擊下一頁評論,在彈出的內容中查找文件中開頭為list_detail_rate.htm的html類型,如下圖所示
這個html中就含有我們需要的內容,左鍵點擊然后選擇響應,就可以看到具體響應內容了!
這里面是一大串包含我們需要的內容在內的源代碼,如果大家有興趣可以提取內容做成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¤tPage={}'.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(',')
然后開始寫主函數,保存到文檔!運行結果如下
emmm,看評論是可以入手的!哈哈!
最后
想說幾點,一個是自己寫個小爬蟲玩玩可以,做分析也行,但是務必切記不要外傳擴散,很容易進坑!二是淘寶的反爬其實也不是很難,比如上面的爬蟲,并沒有做反爬措施,大家可以拿這個來練練手,記得加入sleep就可以,不要給對方服務器造成壓力為最好!
代碼寫的不好,各路高手請見諒!歡迎大家來一起交流、學習!
總結
以上是生活随笔為你收集整理的python爬虫淘宝评论_Python爬虫,抓取淘宝商品评论内容的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Docker]Docker快速上手学习
- 下一篇: 前端学习(3139):react-hel