除了使用上述方法外,还可以使用将不页的数据输出到不同的结构化好的XML文件里面,
然后再进行读取的方法:
配置文件:
<var-def name="targetUrl">http://www.51zyr.com/tpl/index/hotel_list_web.do</var-def>
<var name="page_num"/>
<file action="write" path="hotel_page${page_num}.xml">
<template>
<![CDATA[ <root> ]]>
</template>
<loop item="item" index="i">
<list>
<xpath expression="//table[@background='../images/dotline.gif'][1]/tbody/tr">
<html-to-xml>
<http url="${targetUrl}?pages=${page_num}"/> //这里根据从JAVA文件传过来的参数进行不同页面的查询抓取
</html-to-xml>
</xpath>
</list>
<body>
<xquery>
<xq-param name="item">
<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[ </root> ]]>
</file>
接着是JAVA文件里面的关键代码:
public void QueryPath(int num)
{
try{
ScraperConfiguration config = new ScraperConfiguration("traveldata/config/hotel.xml");
Scraper scraper = new Scraper(config, "traveldata/output/hotel");
scraper.addVariableToContext("page_num", new String(""+num));
scraper.setDebug(true);
long starttime = System.currentTimeMillis();
scraper.execute();
long endtime = System.currentTimeMillis();
System.out.println("Spent time:"+(endtime - starttime));
saveHotel(num);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void getContent(int pageNum) //循环调用
{
for(int i=1;i<=pageNum;i++)
{
QueryPath(i);
}
}
分享到:
相关推荐
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
在本文中,我们将深入探讨如何使用Laravel框架开发与Harvest API集成的应用程序。Harvest是一款流行的项目管理和时间跟踪工具,而Laravel是PHP社区中最受欢迎的Web开发框架之一。结合两者,我们可以创建高效、优雅的...
web harvest的jar包 提供一个xml编辑环境
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 ...
例如,`$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 。让 帮你追踪时间。 这里工作流使你可以完全访问你的收获时间跟踪:查看今天的计时器启动/停止计时器查看...
在你提供的压缩包文件名"WEB_HARVEST"中,很可能包含了WebHarvest的主程序及其相关依赖。 WebHarvest的工作原理是通过读取一个XML配置文件,这个文件定义了如何与目标网站交互、如何解析HTML内容以及如何处理提取的...
从压缩包文件名称“WebList-Harvest-master”可以看出,这是一个开源项目,包含了项目的主分支源代码。用户可以下载并研究其源码,理解并学习如何实现这样的网络数据收获工具。 总结来说,WebList-Harvest项目是...