可以利用其自带的例子里面已经写好了的那个函数,在Functions.xml文件里面,只要
在配置文件的开头把include进来就行了;
Functions.xml文件如下:
<function name="download-multipage-list">
<return>
<while condition="${pageUrl.toString().length() != 0}" maxloops="${maxloops}" index="i">
<empty>
<var-def name="content">
<html-to-xml>
<http url="${pageUrl}"/>
</html-to-xml>
</var-def>
<var-def name="nextLinkUrl">
<xpath expression="${nextXPath}">
<var name="content"/>
</xpath>
</var-def>
<var-def name="pageUrl">
<template>${sys.fullUrl(pageUrl.toString(), nextLinkUrl.toString())}</template>
</var-def>
</empty>
<xpath expression="${itemXPath}">
<var name="content"/>
</xpath>
</while>
</return>
</function>
其里面的各个参数的意义:
<!--
Download multi-page list of items.
@param pageUrl - URL of starting page
@param itemXPath - XPath expression to obtain single item in the list
@param nextXPath - XPath expression to URL for the next page
@param maxloops - maximum number of pages downloaded
@return list of all downloaded items
-->
第一个是指开始的那个页面的URL;
第二个是指你要在页面里面取得的一个list,比如说是href的List或者说是一个tr的
List,我下面的例子就是取得一个tr的List;
第三个是指下一个页面的URL;
第四个是指循环查找的页数;
这就是我所写的配置文件:
<include path="functions.xml"/>
<var-def name="hotels">
<call name="download-multipage-list">
<call-param name="pageUrl">http://www.51zyr.com/tpl/index/hotel_list_web.do?page=1</call-param>
<call-param name="nextXPath">//a[contains(text(),'下页')]/@href</call-param>
<call-param name="itemXPath">//table[@background='../images/dotline.gif']/tbody/tr</call-param>
<call-param name="maxloops">10</call-param>
</call>
</var-def>
<file action="write" path="51zyr/hotels.xml">
<![CDATA[ <hotels> ]]>
<loop item="item" index="i">
<list><var name="hotels"/></list>
<body>
<xquery>
<xq-param name="item" type="node()"><var name="item"/></xq-param>
<xq-expression><![CDATA[
declare variable $item as node() external;
let $num := data($item//td[1])
let $name := data($item//td[2])
let $star := data($item//td[3])
let $address := data($item//td[4])
let $telephone := data($item//td[5])
return
<hotel>
<num>{data($num)}</num>
<name>{data($name)}</name>
<star>{data($star)}</star>
<address>{data($address)}</address>
<telephone>{data($telephone)}</telephone>
</hotel>
]]></xq-expression>
</xquery>
</body>
</loop>
<![CDATA[ </hotels> ]]>
</file>
分享到:
相关推荐
Web-Harvest是一款开源的数据采集工具,主要用于自动化地从网页上提取...了解和掌握Web-Harvest的基本原理和使用方法,将极大地提升你在数据采集领域的技能,无论是做项目研究,还是进行数据分析,都能发挥巨大的作用。
[Web-Harvest数据采集之一]Web-Harvest基础-配置文件分析源码
Web-Harvest的核心是它的配置文件,这些文件通常以.xml结尾,它们定义了如何从网页中抓取和处理数据。XML文件中的元素和属性类似于编程语言中的指令,用于指定URL、提取规则、数据转换等。例如,`<config>`元素是...
通过对异常处理和处理器机制的理解,开发者可以更有效地使用Web-Harvest进行网页数据的抓取和分析,同时也能更好地应对可能出现的错误和问题。在深入学习Web-Harvest的过程中,理解这些核心概念和技术将有助于提高...
web-Harvest的核心在于其配置脚本,这些脚本通常使用XML格式,定义了如何从目标网站抓取数据、如何处理数据以及如何输出结果。脚本中包含了HTTP请求、XPath或XQuery表达式、数据转换和过滤规则等元素。 **五、web-...
Web-Harvest是一款强大的、开源的Web数据提取工具,它允许用户通过简单的配置文件定义规则来抓取网页内容。本手册将深入探讨如何试用Web-Harvest,理解其基本概念和核心功能,以便于在实际项目中灵活应用。 **一、...
Web-Harvest是一款强大的网页数据提取工具,它通过配置文件来定义复杂的网页抓取和处理逻辑。本手册将深入介绍Web-Harvest配置文件的结构和元素,帮助用户理解和运用这款工具。 首先,Web-Harvest配置文件的核心是...
Web-Harvest学习笔记,主要是异常类的使用,标签的使用,scraper的源码等操作
$projects = $harvest->projects()->all(); // 进行其他操作... } ``` 此外,`laravel-harvest` 可能还提供了额外的便利方法,如模型映射、数据转换等,以适应 Laravel 的 Eloquent ORM,使得与数据库的交互更加...
资源分类:Python库 所属语言:Python 资源全名:pytest-harvest-1.7.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
1. **安装依赖**:首先,我们需要通过Composer安装一个Laravel客户端库,如`harvest-php-api`,它提供了一个方便的封装层,使与Harvest API交互变得更简单。在终端中运行: ``` composer require kylekatarnls/...
The main goal behind Web-Harvest is to empower the usage of already existing extraction technologies. Its purpose is not to propose a new method, but to provide a way to easily use and combine the ...
web harvest的jar包 提供一个xml编辑环境
例如,`$harvest = App\Harvest::find(1)`可以获取ID为1的harvest数据,而`$harvest->save()`则可以保存模型的更改。 11. **Blade 模板**: Blade模板允许在视图中混合PHP代码,提供条件语句(@if, @else, @endif...
Web-Harvest 使用XPath表达式来指定需要抓取的数据位置,生成XML文档作为输出结果。这使得Web-Harvest 成为了一款非常适合用于数据提取和转换的工具。 #### 关键技术问题探讨 1. **种子站点的选择**: - 种子站点...
alfred-harvest, 在收获过程中,用于跟踪时间的Alfred工作流 ,,workflow,workflow,workflow,workflow 。让 帮你追踪时间。 这里工作流使你可以完全访问你的收获时间跟踪:查看今天的计时器启动/停止计时器查看...
从压缩包文件名称“WebList-Harvest-master”可以看出,这是一个开源项目,包含了项目的主分支源代码。用户可以下载并研究其源码,理解并学习如何实现这样的网络数据收获工具。 总结来说,WebList-Harvest项目是...
在你提供的压缩包文件名"WEB_HARVEST"中,很可能包含了WebHarvest的主程序及其相关依赖。 WebHarvest的工作原理是通过读取一个XML配置文件,这个文件定义了如何与目标网站交互、如何解析HTML内容以及如何处理提取的...