< 返回文档列表
数据在POST请求里
noInitnoInit

当目标在源码中不存在,此时需用使用浏览器的开发者工具来查找目标数据。在目标网页,点击鼠标右键,选择审查元素。点击NetWork,刷新页面,搜索目标数据,定位目标请求。

1.要循环

场景:目标数据存在于JSON的某个数组中。

示例:获取上图商品的所有评论。

目标数据位置:

将请求返回的内容放到任意JSON视图查看器里以方便查看。在此使用notepad++的插件JSON Viewer。

脚本实例:

record comm;  //定义一个记录集对象
jScript rJs;  //定义一个js对象
time t;  //定义一个时间对象
var itemId = URL.urlname.Middle("itemId=","&");  //根据URL的链接地址获取商品ID
var urs = "https://rate.tmall.com/listTagClouds.htm?itemId=546724870335&isAll=true&isInner=true&t=1545293026844&groupId=&_ksTS=1545293026845_1665&callback=jsonp1666";  //评论数据所在的链接地址
var groc = EXTRACT.OpenDoc(CHANN,urs,0);  //向服务器发送urs请求
if(groc){
var str = groc.GetDom().GetSource().ToStr().Middle("(",")");  //获取服务器返回数据并处理
var json = rJs.RunJson(str);  //解析json字符串并转为json对象
var arr = json.rateDetail.rateList;  //根据json路径找到评论内容所在位置
for(var i=0;i<arr.length;i++)
{
comm.hk = MD5(URL.urlname+i);  //该记录主键
comm.goods_id = itemId;  //商品id
comm.username = arr[i].displayUserNick;  //评论人昵称
comm.content = arr[i].rateContent;  //评论内容
comm.sizetype = arr[i].auctionSku;  //所购买商品的sku
comm.get_time = t.ToStr();  //获取时间
RESULT.AddRec(comm,TMPL.fstdoc.schemaid);  //添加一条记录
}
EXTRACT.CloseDoc(groc);
}

2.不循环

场景:目标数据存在于JSON的某个键值中

示例:获取上图追评个数和图片评论个数

目标数据位置:和5.2.1的数据位置相同

脚本实例:

record comm;  //定义一个记录集对象
jScript rJs;  //定义一个js对象
time t;  //定义一个时间对象
var itemId = URL.urlname.Middle("itemId=","&");  //根据URL的链接地址获取商品ID
var urs = "https://rate.tmall.com/listTagClouds.htm?itemId=546724870335&isAll=true&isInner=true&t=1545293026844&groupId=&_ksTS=1545293026845_1665&callback=jsonp1666";  //评论数据所在的链接地址
var groc = EXTRACT.OpenDoc(CHANN,urs,0);  //向服务器发送urs请求
if(groc){
var str = groc.GetDom().GetSource().ToStr().Middle("(",")");  //获取服务器返回数据并处理
var json = rJs.RunJson(str);  //解析json字符串并转为json对象
var arr = json.rateDetail.rateList;  //根据json路径找到评论内容所在位置
record re;
re.goodId = URL.urlname.Middle("itemId=","&").ToLong();  //商品ID
re.picCount = count .picNum;  //包含图片的评论数
re.addCount =count .used ;  //追评的评论数
RESULT.AddRec(re,TMPL.fstdoc.schemaid);  //添加一条记录
EXTRACT.CloseDoc(groc);
}