先上包的下载地址
https://github.com/robertkrimen/otto
最近在公司实习做网页爬虫。具体工作内容是收录一些环保数据的工作,在工作中遇到一些网页是由JS渲染的页面如下图所示:

我需要提取JS页面中的ID字段、area字段、QYMC字段。
此需求给人第一反应的是用正则表达式去提取。好歹说在校期间也学过4~5种编程语言,每次新学语言都会连带把正则表达式重新学一遍,可是这玩意儿好久没用就又会遗忘,看着那些正则,只想说看着我好迷。
参考领导和前辈的代码,发现他们使用了一种JS解析器,具体作用在Golang中就可以解析JS代码,因此我也对此次实现做了一次记录。使用方法如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
import ( "fmt" "github.com/robertkrimen/otto" ) func main() { vm := otto.New() js := `var qyList=[]; qyList.push({ index:'1', area:'龙湾区', ID: '测试ID一号', QYMC:'一号企业' }) qyList.push({ index:'2', area:'鹿城区', ID: '测试ID二号', QYMC:'二号企业' }) ` vm.Run(js) list,_:=vm.Get("qyList") //获取 js 中 qyList这个变量 keys:=list.Object().Keys() // 获取所有的key for _,key:=range keys{ json,_:=list.Object().Get(key) idValue,_:=json.Object().Get("ID") areaValue,_:=json.Object().Get("area") qymcValue,_:=json.Object().Get("QYMC") id,_:=idValue.ToString() area,_:=areaValue.ToString() qymc,_:=qymcValue.ToString() fmt.Println("企业ID为:",id,"行政区为:",area,"企业名称为:",qymc) } // 输出结果 // 企业ID为: 测试ID一号 行政区为: 龙湾区 企业名称为: 一号企业 // 企业ID为: 测试ID二号 行政区为: 鹿城区 企业名称为: 二号企业 } |
具体其它使用方法请参看文档:
http://godoc.org/github.com/robertkrimen/otto
© 著作权归作者所有
文章评论(0)