[Web-Harvest数据采集之一]WebHarvest基础-配置文件分析
2011-12-11 16:46
501 查看
Web-Harvest 是一个用Java 写的开源的Web 数据抓取工具。在使用Web-Harvest 中可能需要用到如XPath,XQuery,和正则表达式等操作text/xml 的相关技术。Web-Harvest 主要着眼于目前仍占大多数的基于HMLT/XML 的页面内容。另一方面,它也能通过写自己的Java 方法来轻易扩展其提取能力。
Web-Harvest 官方网站(http://web-harvest.sourceforge.net/)已经介绍了其配置文件中的标签的用法。下面我们来分析配置文件的结构和各个模块的含义
Web-Harvest数据抓取开始于<config>根元素,定义一个处理器,数据采集的规则定义在<config></config>里面。上面代码是定义Web-Harvest要进行数据采集的网页。Web-Harvest会自动下载页面对应的源码,按照定义的规则进行数据采集。
研究这段代码之前,就要好好研究一下我们要抓取的网页的源代码了。这里<xpath>标签定义的是我们要抓取的开始的元素节点。在使用Web-Harvest的时候XPath的使用是非常重要的,整个配置文件中大部分会是XPath表达式。//div[@class='m']意思是说源码中所有div标签的属性class属性值等于m的div标签,//div代表所有的div标签。但是这段代码执行的基础是我们上面定义的URL,即<var name="start"/>含义。可以看出我们上面定义的<var-def>的name属性值是start。<var
name="start"/>把上面定义的内容引入进来。这也给我们一个启示:定义过的内容直接引用过来就可以了,不需要重新定义。
以上这些只是些基础的准备工作下面就是我们定义的抓取规则和抓取的到的数据及文件保存的路径了。
<file>标签:读写指定文件名的文件。这里我们定义的action="write"就是写,文件名为360buyCategory.xml编码方式是GBK。
<loop>标签:通过迭代list 里面的每一项然后传到body 里面去执行,返回结果为body 执行后得到的一个列表。<var name="alist"/>这里我们同样引用了前面定义的alist。
<body>标签里面就是我们定义的规则了,以及对于XQuery、XPath的应用需要一定的要求,可以单独去学习。
XPath教程:http://www.w3cschool.cn/index-14.html
XQuery教程:http://www.w3cschool.cn/index-15.html
[Web-Harvest数据采集之一]WebHarvest基础-配置文件分析源码
Web-Harvest 官方网站(http://web-harvest.sourceforge.net/)已经介绍了其配置文件中的标签的用法。下面我们来分析配置文件的结构和各个模块的含义
<?xml version="1.0" encoding="UTF-8"?> <config charset="UTF-8"> <var-def name="start"> <html-to-xml> <http url="http://www.360buy.com/allSort.aspx" charset="gbk" /> </html-to-xml> </var-def> </config>
Web-Harvest数据抓取开始于<config>根元素,定义一个处理器,数据采集的规则定义在<config></config>里面。上面代码是定义Web-Harvest要进行数据采集的网页。Web-Harvest会自动下载页面对应的源码,按照定义的规则进行数据采集。
<var-def name="alist"> <xpath expression="//div[@class='m']"> <var name="start"/> </xpath> </var-def>
研究这段代码之前,就要好好研究一下我们要抓取的网页的源代码了。这里<xpath>标签定义的是我们要抓取的开始的元素节点。在使用Web-Harvest的时候XPath的使用是非常重要的,整个配置文件中大部分会是XPath表达式。//div[@class='m']意思是说源码中所有div标签的属性class属性值等于m的div标签,//div代表所有的div标签。但是这段代码执行的基础是我们上面定义的URL,即<var name="start"/>含义。可以看出我们上面定义的<var-def>的name属性值是start。<var
name="start"/>把上面定义的内容引入进来。这也给我们一个启示:定义过的内容直接引用过来就可以了,不需要重新定义。
Web-Harvest技巧 定义过的内容直接引用过来就可以了,不需要重新定义。 |
<file action="write" path="360buyCategory.xml" charset="gbk"></file>
<file>标签:读写指定文件名的文件。这里我们定义的action="write"就是写,文件名为360buyCategory.xml编码方式是GBK。
<loop item="item" index="i"> <list><var name="alist"/></list> </loop>
<loop>标签:通过迭代list 里面的每一项然后传到body 里面去执行,返回结果为body 执行后得到的一个列表。<var name="alist"/>这里我们同样引用了前面定义的alist。
<body> <xquery> <xq-param name="item"> <var name="item"/> </xq-param> <xq-expression> <![CDATA[ declare variable $item as node() external; let $c1 :=data($item//div[@class='mt'][1]/h2/a/text()) for $i in $item//div[@class='mc'][1]//dl let $c2 := data($i/dt[child::text()]) for $ii in $i/dd/em let $c3 := data($ii/a/text()) let $u := data($ii/a/@href) return <c> <c1>{data($c1)}</c1> <c2>{normalize-space(data($c2))}</c2> <c3>{data($c3)}</c3> <u>{data($u)}</u> </c> ]]> </xq-expression> </xquery> </body>
<body>标签里面就是我们定义的规则了,以及对于XQuery、XPath的应用需要一定的要求,可以单独去学习。
XPath教程:http://www.w3cschool.cn/index-14.html
XQuery教程:http://www.w3cschool.cn/index-15.html
[Web-Harvest数据采集之一]WebHarvest基础-配置文件分析源码
相关文章推荐
- [Web-Harvest数据采集之二]Web-Harvest基础-抓取java代码分析
- Flume安装部署,采集方案配置文件编写案例,启动agent采集数据
- 如何获取web项目hibernate.cfg.xml配置文件中的数据
- flume数据采集测试+编码问题+运行指令+文件配置
- vue-cli的webpack模板项目配置文件分析
- 基于Proguard软件基础上,针对Web项目xml配置文件修改的java项目。
- web数据采集核心技术分享系列(三)如何破解验证码?图像分析?特征匹配?人工智能?第三方集成?...哪个最强大?
- 【java基础:JDBC】通过读取配置文件进行数据库连接并读取数据的Demostration
- [置顶] vue-cli的webpack模板项目配置文件分析
- 大数据分析配置文件
- 第2.1.10章 WEB系统最佳实践Spring文件配置多数据源
- 如何获取配置文件Web.config的AppSetting节点数据
- vue-cli的webpack模板项目配置文件分析
- Web服务基础二之Apache主配置文件httpd.conf
- vue-cli的webpack模板项目配置文件分析
- vue-cli的webpack模板项目配置文件分析
- webpack基础+webpack配置文件常用配置项介绍+webpack-dev-server
- vue-cli的webpack模板项目配置文件分析
- SOC之安全事件分析基础01 — 数据采集
- vs中web配置可浏览json数据文件