概述
通常抓取級(jí)聯(lián)數(shù)數(shù)據(jù)情況不多送火,但要是真需要時(shí)槽片,確多了一些麻煩啤斗,比如抓取商品分類級(jí)別信息等焚鲜。本內(nèi)容將講述如何采集無(wú)限級(jí)聯(lián)聯(lián)數(shù)據(jù)曲尸,并以GoldData來抓取2019年最新的省市縣三級(jí)為示例紊册。
創(chuàng)建數(shù)據(jù)集
在數(shù)據(jù)集管理里比肄,添加數(shù)據(jù)集area。如下圖所示:
數(shù)據(jù)集相當(dāng)于數(shù)據(jù)庫(kù)中的表囊陡,只是字段是靈活的芳绩,可以隨著需要而添加和變更。
創(chuàng)建規(guī)則
在規(guī)則管理里撞反,添加規(guī)則arearule妥色,并將地址http://xzqh.mca.gov.cn/map?填為抓取入口地址。
我們通過分析可知遏片,我們可從http://xzqh.mca.gov.cn/map?獲取省級(jí)數(shù)據(jù)嘹害,然后通過級(jí)級(jí)數(shù)據(jù)請(qǐng)求http://xzqh.mca.gov.cn/selectJson?帶有省級(jí)名稱來獲得市級(jí)數(shù)據(jù),最后再通過市級(jí)數(shù)據(jù)分別請(qǐng)求http://xzqh.mca.gov.cn/selectJson?帶有市級(jí)數(shù)據(jù)來獲得縣級(jí)數(shù)據(jù)吮便。
并且發(fā)現(xiàn)請(qǐng)求?http://xzqh.mca.gov.cn/selectJson?是需要發(fā)POST請(qǐng)求的笔呀,因此我們需要將url加個(gè)前綴fake:,然后用規(guī)則里用JavaScript去請(qǐng)求URL。
我們?cè)诖司帉懙腶rea數(shù)據(jù)集髓需,有以下字段:
名稱說明
sn取區(qū)域編碼作為記錄唯一字段
name名稱
code取區(qū)域編碼
abbr省名簡(jiǎn)寫
parent_code取父區(qū)域編碼
因此編寫規(guī)則如下:
(注:具體規(guī)則內(nèi)容請(qǐng)見文章最后)
然后編寫完成后许师,我們就可以啟動(dòng)抓取器進(jìn)行抓取。
查看數(shù)據(jù)
打開數(shù)據(jù)管理,選擇area數(shù)據(jù)集查看如下圖所示:
導(dǎo)出數(shù)據(jù)
回到數(shù)據(jù)管理微渠,選擇條件搭幻,選擇需要導(dǎo)出的字段,進(jìn)行導(dǎo)出逞盆。像這里數(shù)據(jù)比較多檀蹋,GoldData將會(huì)以打包excel文件并壓縮為zip文件下載。解壓到本地纳击,然后打開excel就可以看到抓取的數(shù)據(jù)续扔,如下圖所示:
結(jié)尾
通過這節(jié)內(nèi)容,可以了解了如何通過GoldData 抓取級(jí)聯(lián)數(shù)據(jù)焕数。但是下一個(gè)問題是如何將數(shù)據(jù)導(dǎo)入自關(guān)聯(lián)列表呢纱昧,且看下一往篇將會(huì)講述如何將級(jí)聯(lián)數(shù)據(jù)融合到數(shù)據(jù)庫(kù)自關(guān)聯(lián)表當(dāng)中。
咐錄:
(抓取規(guī)則)
[
? {
? ? __sample: http://xzqh.mca.gov.cn/map
? ? match0: http\:\/\/xzqh\.mca\.gov\.cn\/map
? ? fields0:
? ? {
? ? ? __model: true? ? ? __node: js
? ? ? __js:
? ? ? ? '''
? ? ? ? var exp11=/json\s=\s(.+)\s+\$\(doc/
? ? ? ? var ret=exp11.exec(html)
? ? ? ? var ss=eval(ret[1])
? ? ? ? for(var i=0;i<ss.length;i++){
? ? ? ? ? var ele=ss[i]
? ? ? ? ? var exp12=/\((.+)\)/.exec(ele.shengji)
? ? ? ? var exp13=/(.+)\(/.exec(ele.shengji)
? ? ? ? ? out.add({sn:ele.quHuaDaiMa,name:exp13[1],code:ele.quHuaDaiMa,abbr:exp12[1],
? ? ? ? parent_code:null,
? ? ? ? })
? ? ? ? }
? ? ? ? '''
? ? ? name:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? code:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? abbr:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? sn:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? __dataset: area
? ? ? parent_code:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? }
? ? fields1:
? ? {
? ? ? __node: js
? ? ? __js:
? ? ? ? '''
? ? ? ? var exp11=/json\s=\s(.+)\s+\$\(doc/
? ? ? ? var ret=exp11.exec(html)
? ? ? ? var ss=eval(ret[1])
? ? ? ? for(var i=0;i<ss.length;i++){
? ? ? ? ? var ele=ss[i]
? ? ? ? ? var url='fake:http://xzqh.mca.gov.cn/selectJson?shengji='+ele.shengji+"&code="+ele.quHuaDaiMa
? ? ? ? ? //var $ajax(url,[__method:'POST',data:'shengji='+ele.shengji]).content
? ? ? ? ? out.add({href:url})
? ? ? ? }
? ? ? ? '''
? ? ? href:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? }
? }
? {
? ? __sample: fake:http://xzqh.mca.gov.cn/selectJson?shengji=北京市(京)&code=110000? ? match0: fake\:http\:\/\/xzqh\.mca\.gov\.cn\/selectJson\?shengji=.+\&code=\d+
? ? fields0:
? ? {
? ? ? __model: true? ? ? __dataset: area
? ? ? sn:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? __node: js
? ? ? __js:
? ? ? ? '''
? ? ? ? var urlRet= /http\:\/\/xzqh\.mca\.gov\.cn\/selectJson\?shengji=(.+)\&code=(\d+)/.exec(baseUri);
? ? ? ? var shengji=urlRet[1]
? ? ? ? var sjCode=urlRet[2]
? ? ? ? var url='http://xzqh.mca.gov.cn/selectJson'
? ? ? ? var? content=$ajax(url,{__method:'POST',data:'shengji='+shengji }).content
? ? ? ? var arr=eval(content);
? ? ? ? for(var i=0;i<arr.length;i++){
? ? ? ? ? var dj=arr[i];
? ? ? ? ? ? var area={
? ? ? ? ? ? ? ? name:dj.diji,
? ? ? ? ? ? ? ? code:dj.quHuaDaiMa,
? ? ? ? ? ? ? ? parent_code:sjCode,
? ? ? ? ? ? ? ? sn:dj.quHuaDaiMa,
? ? ? ? ? ? }
? ? ? ? ? out.add(area);
? ? ? ? }
? ? ? ? '''
? ? ? name:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? code:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? abbr:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? sn:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? parent_code:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? }
? ? fields1:
? ? {
? ? ? __node: js
? ? ? __js:
? ? ? ? '''
? ? ? ? var urlRet= /http\:\/\/xzqh\.mca\.gov\.cn\/selectJson\?shengji=(.+)\&code=(\d+)/.exec(baseUri);
? ? ? ? var shengji=urlRet[1]
? ? ? ? var sjCode=urlRet[2]
? ? ? ? var url='http://xzqh.mca.gov.cn/selectJson'
? ? ? ? var? content=$ajax(url,{__method:'POST',data:'shengji='+shengji }).content
? ? ? ? var arr=eval(content);
? ? ? ? for(var i=0;i<arr.length;i++){
? ? ? ? ? var dj=arr[i];
? ? ? ? ? var url='fake:http://xzqh.mca.gov.cn/selectJson?shengji='+shengji+"&sjcode="+sjCode+"&diji="+dj.diji+"&djcode="+dj.quHuaDaiMa?
? ? ? ? ? out.add({href:url})
? ? ? ? }
? ? ? ? '''
? ? ? href:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? }
? }
? {
? ? __sample: fake:href :fake:http://xzqh.mca.gov.cn/selectJson?shengji=北京市(京)&sjcode=110000&diji=北京市&djcode=110000? ? match0: fake\:http\:\/\/xzqh\.mca\.gov\.cn/selectJson\?shengji=([^&]+)\&sjcode=([^&]+)\&diji=([^&]+)\&djcode=([^&]+)
? ? fields0:
? ? {
? ? ? __model: true? ? ? __dataset: area
? ? ? __node: js
? ? ? sn:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? __js:
? ? ? ? '''
? ? ? ? var urlRet=/fake\:http\:\/\/xzqh\.mca\.gov\.cn\/selectJson\?shengji=([^\&]+)\&sjcode=([^\&]+)\&diji=([^\&]+)\&djcode=([^\&]+)/.exec(baseUri)
? ? ? ? var shengji=urlRet[1]
? ? ? ? var sjCode=urlRet[2]
? ? ? ? var dj=urlRet[3]
? ? ? ? var djCode=urlRet[4]
? ? ? ? var url='http://xzqh.mca.gov.cn/selectJson'
? ? ? ? var? content=$ajax(url,{__method:'POST',data:'shengji='+shengji+'&diji='+dj }).content
? ? ? ? var arr=eval(content);
? ? ? ? for(var i=0;i<arr.length;i++){
? ? ? ? ? var dj=arr[i];
? ? ? ? ? ? var area={
? ? ? ? ? ? ? ? name:dj.xianji,
? ? ? ? ? ? ? ? code:dj.quHuaDaiMa,
? ? ? ? ? ? ? ? parent_code:djCode,
? ? ? ? ? ? ? ? sn:dj.quHuaDaiMa,
? ? ? ? ? ? }
? ? ? ? ? out.add(area);
? ? ? ? }
? ? ? ? '''
? ? ? name:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? code:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? abbr:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? sn:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? ? parent_code:
? ? ? {
? ? ? ? expr: ""? ? ? ? attr: ""? ? ? ? js: ""? ? ? ? __label: ""? ? ? ? __showOnList: false? ? ? ? __type: ""? ? ? ? down: "0"? ? ? ? accessPathJs: ""? ? ? ? uploadConf: ""? ? ? }
? ? }
? }
]