[Web-Harvest数据采集之一]WebHarvest基础-配置文件分析
来源:互联网 发布:ps手绘软件 编辑:程序博客网 时间:2024/06/05 02:42
Web-Harvest 是一个用Java 写的开源的Web 数据抓取工具。在使用Web-Harvest 中可能需要用到如XPath,XQuery,和正则表达式等操作text/xml 的相关技术。Web-Harvest 主要着眼于目前仍占大多数的基于HMLT/XML 的页面内容。另一方面,它也能通过写自己的Java 方法来轻易扩展其提取能力。
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数据采集之一]WebHarvest基础-配置文件分析
- [Web-Harvest数据采集之二]Web-Harvest基础-抓取java代码分析
- 基于Web-Harvest精确采集互联网的数据
- web-harvest 采集"腾讯读书“ 小说
- 用 web-harvest 挖掘需要的数据
- 用web-harvest爬取yahoo!answers数据
- 试用Web-Harvest
- web harvest 使用手册
- Web-Harvest(1)
- 基于Web-Harvest抓取
- HTTP协议、正则表达式、HTML,WEB数据采集基础
- web harvest 之初体验
- Web-Harvest的简要介绍
- web-harvest页面编码识别的解决方法,及原理分析,以及中文乱码的问题
- java采集网页数据方法【多线程数据采集之一】
- java采集网页数据方法【多线程数据采集之一】
- 数据分析之数据采集
- 数据采集与反采集原理分析
- 2012学年规划
- u-boot的Makefile分析之一make smdk2410_config
- 关于 Java Collections API 您不知道的 5 件事,第 1 部分
- #ifdef __cplusplus 是什么意思?
- ubuntu字符乱码问题
- [Web-Harvest数据采集之一]WebHarvest基础-配置文件分析
- javase格式化数字实例总结
- 用WindowManager直接显示View
- \lib\klist.c
- Win7安装英文语言包(图文)
- lookupfile 在新标签中打开文件
- socket --------tcp/ip
- vim自动补全‘(’。。。
- Silverlight4里面嵌入html页面或者asp.net(jsp)控件实现