【摘要】
集算器 SPL 支持抓取网页数据,根据抓取定义规则,可将网页数据下载到在本地进行统计分析。具体定义规则要求、使用详细情况,请前往乾学院:集算器 SPL 抓取网页数据!
网站上的数据源是我们进行统计分析的重要信息源。当我们浏览网页,看到自己感兴趣数据内容时,希望能够快速抓取网页上的数据,这对于数据分析相关工作来说极其重要,也是必备的技能之一。但是网络数据抓取大多需要复杂的编程知识,操作也比较繁琐。这里介绍如何用集算器 SPL 快速抓取网页数据。
1、基本流程图
2、抓取网页数据接口
3、定义规则
A、web_info
B、init_url
C、help_url
D、target_url
E、page_url
4、抓取股票历史数据
5、用户自定义程序
A、数据提取程序接口
B.数据保存程序接口
C、数据提取程序样例
D、数据保存程序样例
E、自定义程序的使用
1、基本流程图
从给定的开始地址进行遍历,将解析过滤后的网址放入下载地址队列,分成网址页 help_url 与下载页 target_url, 网址页只收集网址,下载页即能收集网址,也能提取数据,把提取到的数据保存起来。抓取网页数据直到遍历地址为空,则抓取工作结束。
2、抓取网页数据接口
web_crawl(jsonstr) 是抓取网页数据接口,参数 jsonstr 是定义规则的字符串,抓取数据时,根据定义规则遍历 URL、下载、提取、保存相关内容数据。
本接口依赖集算器外部库 webcrawlCli。它缺省安装在集算器软件的 esProc\extlib\webcrawlCli 路径下,在集算器的外部库设置中勾选 webcrawlCli 项, 重启集算器后,就可以使用 web_crawl 接口。
web_crawl 简单用法,如抓取指定股票数据,SPL 脚本 demo.dfx:
A | |
1 | [{web_info:{save_path:'d:/tmp/data', save_post:'false'}},{init_url:['http://www.aigaogao.com/tools/history.html?s=600000']},{page_url:{extractby: "//div[@id='ctl16_contentdiv']/",class:'default'}}] |
2 | =web_crawl(A1) |
3 | =file("D:/tmp/data/raqsoft.com/600000.txt").import@cqt() |
获取股票代码 600000 的数据文件:
文件内容:
3、定义规则
根据基本流程图,将定义规则分成网站信息、初始网址、网址页、下载页、提取数据五部分。具体内容如下:
[
{ web_info:{domain:'www.banban.cn', save_path:'d:/tmp/data/webmagic', thread_size:2, cookie:{name:"jacker", laster:"2011"},
user_agent:'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:39.0) Gecko/20100101 Firefox/39.0'}},
{ init_url:['https://www.banban.cn/gupiao/list_cybs.html', 'https://www.banban.cn/gupiao/list_sh.html']},
{ help_url:['gupiao/list_(sh|sz|cyb)\.html', '/shujv/zhangting/', '/agu/$']},
{ target_url:{reg_url:'/agu/365\d'}},
{ target_url:{filter:'gupiao/list_(sh|sz|cyb)\.html', reg_url:'gupiao/[sz|sh]?(60000\d)/',new_url:'http://www.aigaogao.com/tools/history.html?s=%s'}},
{ page_url:{filter:'history.html\?s=\d{6}', extractby: "//div[@id='ctl16_contentdiv']/"}},
{ page_url:{extractby: "//div[@id='content_all']/"}},
{ page_url:{filter:'/agu/365