【使用工具】前嗅ForeSpider数据采集系统,免费下载:ForeSpider免费版本下载地址
l采集网站
【入口网址】
http://quote.eastmoney.com/center/gridlist.html#hs_a_board
【采集内容】
采集行情中心沪深京A股中的所有数据。
【采集效果】如下图所示:
l采集思路
l配置步骤
1. 新建采集任务
选择【采集配置】,点击任务列表右上方【+】号可新建采集任务,将采集入口地址填写在【采集地址】框中,【任务名称】自定义即可,点击下一步。
2.观察翻页请求链接
①在浏览器中打开该页面,点击不同的翻页,观察左上角页面链接,发现没有变化。说明翻页中的数据在请求链接中。
②点击F12,如下图所示操作,先清空所有请求,点击任意一个翻页,右侧出现对应请求链接。打开请求的Preview,看到有表格中的数据。说明该请求为该翻页对应的请求链接。
右击该请求,可复制链接。
③将复制的链接粘贴到文档中,并用同样的方法,再获取另外两个翻页链接,观察翻页请求链接规律如下所示:
3.拼取翻页请求链接
①选中链接抽取,打开脚本窗口。
②写一个for循环,拼取翻页请求链接。
脚本文本如下所示:
url u;//定义一个链接取值 for(int i=1;i <=50;i++) //设定翻页总数50 { u.title = URL.title+"@_@"+i.ToStr();//返回链接标题为当前链接+@_@+第i页 u.urlname = "http://42.push2.eastmoney.com/api/qt/clist/get?cb=jQuery1124005285923334703457_1642750942461&pn="+i+"&pz=20&po=1&np=1&ut=bd1d9ddb04089700cf9c27f6f7426281&fltt=2&invt=2&fid=f3&fs=m:0+t:6,m:0+t:80,m:1+t:2,m:1+t:23,m:0+t:81+s:2048&fields=f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f12,f13,f14,f15,f16,f17,f18,f20,f21,f23,f24,f25,f22,f11,f62,f128,f136,f115,f152&_="+time(time.GetTime()).ToStr().Left(" ")+"%2017:27:240000";//根据请求链接规律,拼取链接 u.entryid = CHANN.id;//返回链接id u.tmplid = 2;//关联模板02 RESULT.AddLink(u);//结束返回链接 }
③采集预览,查看链接是否正确,复制任意一条链接,并在浏览器中打开该链接。
如下图所示,源码中包含该翻页的数据内容,则表示请求链接配置正确,可继续下一步操作。
4.抽取数据
①新建模板02,在其下新建一个数据抽取,如下图所示:
②新建数据表,具体如下图所示:
④关联数据表
⑤打开脚本窗口,新建数据抽取脚本。
⑥打开浏览器,观察源码,发现页面表格中的数据,在页面源码的json串中,在data中的diff数组中,每个数值,对应一行数据。每行数据分别在f1——f152对应的数值中。
根据数据所在位置规律,编写脚本如下所示:
脚本文本:
var str=DOM.GetSource().ToStr();//获取请求链接中所有的源码 var str_sec=str.Middle('"data":','})');//获取data后的数组内容 jScript js;//定义一个js var obj = js.RunJson(str_sec);//运行数组 var data=obj.diff;//定义data为diff数组 for(var i=0;i<20;i++){//有20个数值,所以写一个for循环,来获取这些数值的内容 record re;//定义返回值,固定搭配 re.id=URL.title.Right("@_@")+i;//id为当前链接标题中@_@后数值+i re.f1=data[i].f1;//返回f1为data数组中的第i个数值中的f1值 re.f2=data[i].f2;//返回f1为data数组中的第i个数值中的f2值 re.f3=data[i].f3;//返回f1为data数组中的第i个数值中的f3值 re.f4=data[i].f4; re.f5=data[i].f5; re.f6=data[i].f6; re.f7=data[i].f7; re.f8=data[i].f8; re.f9=data[i].f9; re.f10=data[i].f10; re.f11=data[i].f11; re.f12=data[i].f12; re.f13=data[i].f13; re.f14=data[i].f14; re.f15=data[i].f15; re.f16=data[i].f16; re.f17=data[i].f17; re.f18=data[i].f18; re.f20=data[i].f20; re.f21=data[i].f21; re.f22=data[i].f22; re.f23=data[i].f23; re.f24=data[i].f24; re.f25=data[i].f25; re.f62=data[i].f62; re.f115=data[i].f115; re.f128=data[i].f128; re.f140=data[i].f140; re.f141=data[i].f141; re.f136=data[i].f136; re.f152=data[i].f152; RESULT.AddRec(re,this.schemaid);//结束返回一个数据,固定搭配 }
⑥采集预览
发现数据都采集出来了,说明配置成功。
l采集步骤
模板配置完成,采集预览没有问题后,可以进行数据采集。
1.建立数据表单
选择【数据建表】,点击【表单列表】中该模板的表单,在【关联数据表】中选择【创建】,表名称自定义,这里命名为【dong】(注意命名不能用数字和特殊符号),点击【确定】。创建完成,勾选数据表,并点击右上角保存按钮。
2.开始采集
选择【数据采集】,勾选任务名称,点击【开始采集】,则正式开始采集。
3.导出数据
采集结束后,可以在【数据浏览】中,选择数据表查看采集数据,并可以导出数据。
4.导出的文件打开如下图所示:
*本教程仅供教学使用,严禁用于商业用途!