本文以读取商品评论的json数据的方式来获取天猫商品评论,本文所采用的方法借鉴自知乎某大神(https://www.zhihu.com/question/36524413),可以非常方便地爬取特定商品的评价信息,但操作时需要熟悉url中各参数的含义及获取方式。
1.爬取天猫商品评论信息示例
1.1 源代码如下所示:
# -*- coding: utf-8 -*-
"""
Created on Thu Jul 6 16:56:32 2017
@author: Administrator
"""
import requests
import json
#商品评论的JSON数据
url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=541396117031&spuId=128573071&spuId=128573071&sellerId=2616970884&order=3¤tPage=1&append=⊙&content=1'
req = requests.get(url)
jsondata = req.text[15:]
data = json.loads(jsondata)
#输出页面信息
print('page:',data['paginator']['page'])
#遍历评论信息列表
for i in data["rateList"]:
#输出商品sku信息
print(i['auctionSku'])
#输出评论时间和评论内容
print(i['rateDate'],i['rateContent'])
info = i['appendComment']
#判断是否有追加评论
if info:
print(info['commentTime'])
print(info['content'])
print('======')
1.2 测试结果如下图所示:
天猫商品原始评论截图如下图所示:
对比上面两张图片,可以发现已经成功获取到该商品近期的评论信息。
2.URL中各参数详细分析
上面虽然能够成功获取天猫商品评论信息,但是只能获取特定商品某一页的评论信息,并且url地址也已经事先给出来了。那如果想获取其他类别商品的多页评论数据怎么办呢?还是采用同样的方式,只不过需要对url地址中参数进行修改。上述代码中url详细地址如下所示:
url = 'https://rate.tmall.com/list_detail_rate.htm?itemId=541396117031&spuId=128573071&spuId=128573071&sellerId=2616970884&order=3¤tPage=1&append=⊙&content=1'
仔细分析该url可以发现该url有如下固定格式:
其中,https://rate.tmall.com/list_detail_rate.htm?为商品评论数据的固定开头,itemId为商品ID,spuId为店铺ID,sellerId为店主ID,order取值的不同对应不同的评论排序方式,currentPage表示想要获取第几页评论数据,append表示是否有追加评论。
下面介绍一下各项参数的获取方式,itemId可以在商品详情页URL中获取,如下图所示:
spuId和sellerId则需要在商品详情页源代码中获取,如下图所示:
后面的几项参数不同的取值对应不同商品评论信息,可以根据自己的需要进行尝试。当然,这种方法虽然能够非常简便的获取商品评论信息,但还需要人工修改参数,还有待进一步完善,未完待续。