图文教程
视频教程
采集模板
常见问题
当目标在源码中不存在,此时需用使用浏览器的开发者工具来查找目标数据。在目标网页,点击鼠标右键,选择审查元素。点击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);
}