公司网站购物平台建设,成都建筑工程设计公司,有域名怎么发布网站吗,绍兴网站制作方案l 采集网站
【场景描述】采集中国国际招标网招标数据。 【源网站介绍】中国国际招标网致力于为企业提供招标、采购、拟在建项目信息及网上招标采购等一系列商务服务。 【使用工具】前嗅ForeSpider数据采集系统 http://www.forenose.com/view/forespider/view/download.html 【…l 采集网站
【场景描述】采集中国国际招标网招标数据。 【源网站介绍】中国国际招标网致力于为企业提供招标、采购、拟在建项目信息及网上招标采购等一系列商务服务。 【使用工具】前嗅ForeSpider数据采集系统 http://www.forenose.com/view/forespider/view/download.html 【入口网址】
http://chinabidding.mofcom.gov.cn/channel/business/bulletinList.shtml?s
【采集内容】
采集字段公告名、发布时间、正文内容、链接、公告类型、所属地区。 【采集效果】
如下图所示 l 思路分析
配置思路概览 l 配置步骤
1.新建采集任务
选择【采集配置】点击任务列表右上方【】号可新建采集任务将采集入口地址填写在【采集地址】框中【任务名称】自定义即可点击下一步。 2.获取分类链接
在浏览器中打开中国国际招标网我们要采集所有招标公告、招标变更公告、评价结果公示和中标结果公告中的公告内容所以第一步是获取以上分类的请求链接。
在浏览器中分别搜索各类公告发现页面链接没有变化说明对应的数据在请求链接中。点击F12打开开发者工具选择Network然后搜索任何一个分类比如“招标变更公告”开发者工具中出现该分类对应请求如图所示 观察发现该请求是一个post请求其通过post Form Data来传递信息。
该请求的链接为http://chinabidding.mofcom.gov.cn/zbwcms/front/bidding/bulletinInfoList
该请求的Form Data为pageNumber1keyWordtimeTyperangeCodetypeCode2capitalSourceCodeindustryCodeprovinceCode 同样的方法观察其他分类对应的请求发现“招标公告”请求链接为http://chinabidding.mofcom.gov.cn/zbwcms/front/bidding/bulletinInfoList
该请求的Form Data为
pageNumber1keyWordtimeTyperangeCodetypeCode1capitalSourceCodeindustryCodeprovinceCode Post请求链接是不变的其Form Data中的typeCode参数是变化的观察发现各分类对应typeCode如下所示
招标公告-1 招标变更公告-2 评标结果公告-3 中标结果公告-4
根据以上规律在ForeSpider中用脚本拼写请求具体如下所示 脚本文本如下所示
array cla; //定义一个数组
cla [{name:招标公告,num:1},
{name:招标变更公告,num:2},
{name:评标结果公告,num:3},
{name:中标结果公告,num:4}]; //数组对象内容分别为分类名和对应typeCodeurl u;//定义一个url
for(int i 0;i cla.length; i){//循环数组u.title cla[i].name#cla[i].num; //链接标题为分类名#typeCodeu.urlname http://chinabidding.mofcom.gov.cn/zbwcms/front/bidding/bulletinInfoList; //链接请求为post请求u.tmplid 2; //关联模板02u.entryid CHANN.id; //固定搭配请求排重var postpageNumber1keyWordtimeTyperangeCodetypeCodecla[i].numcapitalSourceCodeindustryCodeprovinceCode;//拼post Form DataRESULT.AddLink(u,post); //返回请求
} 3.获取翻页链接
用同样的方法观察不同分类招标公告在不同页面上的请求发现其post请求链接没变不同分类不同翻页的请求与其Form Data中的pageNumber参数、typeCode参数有关。
例如pageNumber2keyWordtimeTyperangeCodetypeCode1capitalSourceCodeindustryCodeprovinceCode 返回的是招标公告第二页的数据内容。
根据以上规律在ForeSpider中新建模板02链接抽取模板用脚本拼写请求具体如下所示 脚本文本如下所示
var str DOM.GetSource().ToStr();//获取到所有源码
jScript js;//定义一个js
var obj js.RunJson(str);//运行js
var pageobj.maxPageNum;//取源码中最大页数
for(int i 1;i 3; i){//循环翻页url u;//定义一个urlu.title URL.title.Left(#)第 i页URL.title.Right(#); //链接标题为公告分类翻页数分类参数u.urlname http://chinabidding.mofcom.gov.cn/zbwcms/front/bidding/bulletinInfoList; //请求链接u.tmplid 3; //关联模板03u.entryid CHANN.id; //固定搭配var postpageNumberikeyWordtimeTyperangeCodetypeCodeURL.title.Right(#)capitalSourceCodeindustryCodeprovinceCode;//拼写Form Data参数RESULT.AddLink(u,post); //返回请求
} 采集预览观察生成的链接是否与网页中对应的翻页链接和Form Data一致如果一致则继续配置下一步。 4.获取招投标公告列表链接
①新建模板03在其下新建一个链接抽取模板具体操作如下所示 ②在浏览器上观察翻页请求链接返回的源码中的公告数据内容如下所示 根据数据结构在ForeSpider中用脚本抽取列表链接数据具体如下所示 脚本文本如下所示
var str DOM.GetSource().ToStr();//获取到所有源码
jScript js;//定义一个js
var obj js.RunJson(str);//运行js
var pageobj.maxPageNum;//取源码中最大页数
for(int i 1;i 3; i){//循环翻页url u;//定义一个urlu.title URL.title.Left(#)第 i页URL.title.Right(#); //链接标题为公告分类翻页数分类参数u.urlname http://chinabidding.mofcom.gov.cn/zbwcms/front/bidding/bulletinInfoList; //请求链接u.tmplid 4; //关联模板03u.entryid CHANN.id; //固定搭配var postpageNumberikeyWordtimeTyperangeCodetypeCodeURL.title.Right(#)capitalSourceCodeindustryCodeprovinceCode;//拼写Form Data参数RESULT.AddLink(u,post); //返回请求
} 5.抽取招投标公告数据
①新建模板04在其下新建一个数据抽取模板用来抽取招投标公告数据。 ②在数据建表模块新建一个数据表字段如下所示 ③关联数据表
在数据抽取处关联新建的数据表。 ④字段publish_time、biaoStage、text_title、text_url、city在上一层均已获取到并通过链接标题传递到本层所以可直接使用脚本从链接标题中获取。
字段text_all需在数据页源码中获取在浏览器中打开任意一个公告数据页点击F12查找到正文数据在源码中对应的位置如下图所示 我们发现正文内容在class为mt20 clearfix的节点下所以用脚本取该节点文本即可。数据抽取脚本如下所示 脚本文本如下所示
var strDOM.GetSource().ToStr();//获取数据页所有源码record re;//定义一个返回值
re.idMD5(URL.urlname);//获取数据页链接的MD5值作为数据id
re.publish_timeURL.title.Middle(%%,~~);//从链接标题中提取发布时间并返回值
re.biaoStageURL.title.Left();//从链接标题中提取公告类别并返回值
re.text_titleURL.title.Middle(,$$);//从链接标题中提取公告标题并返回值
re.text_urlURL.urlname;//返回数据页链接
re.cityURL.title.Middle($$,%%);//从链接标题中提取城市并返回值
re.text_allDOM.GetTextAll(DOM.FindClass(mt20 clearfix));//找到mt20 clearfix节点并获取其下所有文本内容返回
RESULT.AddRec(re,this.schemaid); ⑤采集预览如下图所示各类招标数据已被采集出来了说明模板配置完成。 |采集步骤
模板配置完采集预览没有问题可以进行数据采集。
1.建立数据表单
选择【数据建表】点击【表单列表】中该模板的表单在【关联数据表】中选择【创建】表名称自定义这里命名为【guojizb】注意命名不能用数字和特殊符号点击【确定】。创建完成勾选数据表并点击右上角保存按钮。 2.开始采集
选择【数据采集】勾选任务名称点击【开始采集】则正式开始采集。 3.导出数据
采集结束后可以在【数据浏览】中选择数据表查看采集数据并导出数据。 4.导出的文件 本教程仅供教学使用严禁用于商业用途