使用Web-Harvest抓取数据并保存到数据库(一)

1. 从其官网:http://web-harvest.sourceforge.net/上下载所需工具并把其工程部署到eclipse里面这自不必说,我下载的是1.0版本的。

2. 看看并运行一下其自带的例子,这个步骤还是比较重要的,不过由于任务较紧,所以我只看了其中几个而已。

3. 开始我的工作:

a. 这里我要分析并抓取的页面:http://www.ctsgz.cn/tpl/index/search_more_label.do?xxk_name=%E6%B5%B7%E5%8D%97,我要的是里面前两个表里面的数据,

要先仔细分析一下页面的结构,看看怎样抓取比较好。

b. 从例子可以看出要选取其里面的数据应该是要在配置文件里面进行配置的而且要用到xpath的知识,不熟,所以还要进行xpath相关知识的学习(我也是临时
抱佛脚,看了一下),然后对着例子来看,经过多翻测试终于得出下面的配置,可以选出第一个表格里面的所有tr,并且返回的是一个list:

<var-def name="trlist">
<xpath expression="//table[@background='../images/dotline.gif'][1]/tbody/*[1]/following-sibling::*"> //xpath的语法要稍微看一下才行
<html-to-xml>
<http url="${targetUrl}"/>
</html-to-xml>
</xpath>
</var-def>


c. 然后再根据这个list在下面进行循环读取并写入文件:

<file action="write" path="test_ctsgz_${surf_name}.xml">

<template>
<![CDATA[ <root> ]]>
</template>

<loop item="item" index="i">
<list>
<var name="trlist"/>
</list>
<body>
<xquery>
<xq-param name="item">
<var name="item"/>
</xq-param>
<xq-expression><![CDATA[
declare variable $item as node() external;

let $order := data($item//td[1])
let $pathName := data($item//td[2])
let $startDate := data($item//td[3])
let $days := data($item//td[4])
let $travelTools := data($item//td[5])
let $price := data($item//td[6])
return
<city>
<order>{data($order)}</order>
<pathName>{data($pathName)}</pathName>
<startDate>{data($startDate)}</startDate>
<days>{data($days)}</days>
<travelTools>{data($travelTools)}</travelTools>
<price>{data($price)}</price>
</city>
]]></xq-expression>
</xquery>
</body>
</loop>
<![CDATA[ </root> ]]>
</file>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值