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

使用web-harvest抓取分页数据(二)

阅读更多
   除了使用上述方法外,还可以使用将不页的数据输出到不同的结构化好的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);
		}
	}

分享到:
评论
1 楼 zzhzzh204553 2008-11-01  
这些循环操作,可以全部写在XML文件中。
不然又要写java代码,又要考虑xml文件

相关推荐

    [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

    在本文中,我们将深入探讨如何使用Laravel框架开发与Harvest API集成的应用程序。Harvest是一款流行的项目管理和时间跟踪工具,而Laravel是PHP社区中最受欢迎的Web开发框架之一。结合两者,我们可以创建高效、优雅的...

    web-harvest

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

    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 ...

    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 。让 帮你追踪时间。 这里工作流使你可以完全访问你的收获时间跟踪:查看今天的计时器启动/停止计时器查看...

    webharvset爬虫抓取

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

    WebList-Harvest:这是EECS433课程项目

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

Global site tag (gtag.js) - Google Analytics