`
scnujie
  • 浏览: 127742 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

使用Web-Harvest抓取分页的数据

阅读更多
   可以利用其自带的例子里面已经写好了的那个函数,在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>
  
3
0
分享到:
评论

相关推荐

    [Web-Harvest数据采集之二]Web-Harvest基础-抓取java代码分析

    Web-Harvest是一款开源的数据采集工具,主要用于自动化地从网页上提取...了解和掌握Web-Harvest的基本原理和使用方法,将极大地提升你在数据采集领域的技能,无论是做项目研究,还是进行数据分析,都能发挥巨大的作用。

    [Web-Harvest数据采集之一]Web-Harvest基础-配置文件分析源码

    [Web-Harvest数据采集之一]Web-Harvest基础-配置文件分析源码

    web-harvest解析及源文件

    Web-Harvest的核心是它的配置文件,这些文件通常以.xml结尾,它们定义了如何从网页中抓取和处理数据。XML文件中的元素和属性类似于编程语言中的指令,用于指定URL、提取规则、数据转换等。例如,`&lt;config&gt;`元素是...

    Web-Harvest学习笔记.doc

    通过对异常处理和处理器机制的理解,开发者可以更有效地使用Web-Harvest进行网页数据的抓取和分析,同时也能更好地应对可能出现的错误和问题。在深入学习Web-Harvest的过程中,理解这些核心概念和技术将有助于提高...

    web-Harvest帮助手册

    web-Harvest的核心在于其配置脚本,这些脚本通常使用XML格式,定义了如何从目标网站抓取数据、如何处理数据以及如何输出结果。脚本中包含了HTTP请求、XPath或XQuery表达式、数据转换和过滤规则等元素。 **五、web-...

    试用Web-Harvest 使用手册

    Web-Harvest是一款强大的、开源的Web数据提取工具,它允许用户通过简单的配置文件定义规则来抓取网页内容。本手册将深入探讨如何试用Web-Harvest,理解其基本概念和核心功能,以便于在实际项目中灵活应用。 **一、...

    Web-Harvest手册

    Web-Harvest是一款强大的网页数据提取工具,它通过配置文件来定义复杂的网页抓取和处理逻辑。本手册将深入介绍Web-Harvest配置文件的结构和元素,帮助用户理解和运用这款工具。 首先,Web-Harvest配置文件的核心是...

    Web-Harvest学习笔记

    Web-Harvest学习笔记,主要是异常类的使用,标签的使用,scraper的源码等操作

    Laravel开发-laravel-harvest

    $projects = $harvest-&gt;projects()-&gt;all(); // 进行其他操作... } ``` 此外,`laravel-harvest` 可能还提供了额外的便利方法,如模型映射、数据转换等,以适应 Laravel 的 Eloquent ORM,使得与数据库的交互更加...

    Python库 | pytest-harvest-1.7.4.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:pytest-harvest-1.7.4.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Laravel开发-harvest-api

    1. **安装依赖**:首先,我们需要通过Composer安装一个Laravel客户端库,如`harvest-php-api`,它提供了一个方便的封装层,使与Harvest API交互变得更简单。在终端中运行: ``` composer require kylekatarnls/...

    java开源软件项目网络爬虫-webharvest

    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

    web harvest的jar包 提供一个xml编辑环境

    Laravel开发-laravel-harvest .zip

    例如,`$harvest = App\Harvest::find(1)`可以获取ID为1的harvest数据,而`$harvest-&gt;save()`则可以保存模型的更改。 11. **Blade 模板**: Blade模板允许在视图中混合PHP代码,提供条件语句(@if, @else, @endif...

    基于Nutch的Web网站定向采集系统

    Web-Harvest 使用XPath表达式来指定需要抓取的数据位置,生成XML文档作为输出结果。这使得Web-Harvest 成为了一款非常适合用于数据提取和转换的工具。 #### 关键技术问题探讨 1. **种子站点的选择**: - 种子站点...

    alfred-harvest, 在收获过程中,用于跟踪时间的Alfred工作流.zip

    alfred-harvest, 在收获过程中,用于跟踪时间的Alfred工作流 ,,workflow,workflow,workflow,workflow 。让 帮你追踪时间。 这里工作流使你可以完全访问你的收获时间跟踪:查看今天的计时器启动/停止计时器查看...

    WebList-Harvest:这是EECS433课程项目

    从压缩包文件名称“WebList-Harvest-master”可以看出,这是一个开源项目,包含了项目的主分支源代码。用户可以下载并研究其源码,理解并学习如何实现这样的网络数据收获工具。 总结来说,WebList-Harvest项目是...

    webharvset爬虫抓取

    在你提供的压缩包文件名"WEB_HARVEST"中,很可能包含了WebHarvest的主程序及其相关依赖。 WebHarvest的工作原理是通过读取一个XML配置文件,这个文件定义了如何与目标网站交互、如何解析HTML内容以及如何处理提取的...

Global site tag (gtag.js) - Google Analytics