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

WebHavrest使用分享(一)

阅读更多
需要使用爬虫这个东西,所以我研究了一下子这个东西。
WebHarvest是个挺强大的爬虫,主要不是在Java代码那块使用,而是需要写脚本。
现在对WebHarvest这个配置的语法也不是很熟,只是写写使用经验。

外话:虽然我很烦写脚本,不过用着用着,我也觉得脚本的好处,发现脚本粘合性用在项目中也是很不错的。


可以到www.webharvest.org网上下载jar包。
其中还有一个方便调试的脚步本的工具:

下载这个文件,可以双击,也可以使用java -jar 命令打开。
软件如下:



也可以使用代码执行脚本:
//输入配置文件名
String scriptFile = "c:/mumu/tmp/webharvest/test2.xml";
//输入内容的存放文件夹路径
		String outDirectory = "c:/mumu/tmp/webharvest";
        ScraperConfiguration config = new ScraperConfiguration(scriptFile); 
        Scraper scraper = new Scraper(config, outDirectory); 
        scraper.setDebug(true); 
        
        long startTime = System.currentTimeMillis(); 
        scraper.execute(); 
        System.out.println("time elapsed: " + (System.currentTimeMillis() - startTime)); 


现在开始编写配置文件:
<?xml version="1.0" encoding="utf-8"?>

<config charset="utf-8">
  <var-def name="start">
	  <html-to-xml>
	  	<http url="http://www.tianya.cn/bbs/index.shtml" charset="utf-8" />
	  </html-to-xml>
  </var-def>
  <var-def name="ulList">
	  <xpath expression="//div[@class='bankuai_list']">
	  	<var name="start" />
	  </xpath>
  </var-def>
  <file action="write" path="tianya/siteboards.xml" charset="utf-8">
  <![CDATA[ <site> ]]>
  <loop item="item" index="i">
	  <list><var name="ulList"/></list>
	  <body>
		  <xquery>
			  <xq-param name="item">
			  <var name="item"/>
			  </xq-param>
			  <xq-expression><![CDATA[
				  declare variable $item as node() external; 
					<board boardname="{normalize-space(data($item//h3/text()))}" boardurl="">
				  {
				  for $row in $item//li return
				  <board boardname="{normalize-space(data($row//a/text()))}" boardurl="{normalize-space(data($row/a/@href))}" />
				  }
				  </board>
			  ]]></xq-expression>
		  </xquery>
	  </body>
  </loop>
  <![CDATA[ </site> ]]>
  </file>
</config>


输出结果我就不打印出来了,这个脚本例子是网上的。

先简单地说一个这个配置文件的写法
<var-def name="a">abc</var-def>
这里定义了一个a 变量标签的内容就是a的值。
现在a的值就是abc。

然而如果我现在需要爬baidu的页面,就需要先将http://www.baidu.com这个页面给下载下来先。
可以使用标签
<http url="www.baidu.com"  charset="utf-8" />
这个标签将代码返回下载下来所有的页面代码,此时需要有一个变量去存起来,可以使用
<var-def name="baiduall">
  <http url="www.baidu.com"  charset="utf-8" />
</var-def>

需要抓内容的必须将html转成xml,这样可以方便以DOM 的方式去定位信息内容。
现在可以使<html to xml标签.

<var-def name="baiduall">
  <http url="www.baidu.com"  charset="utf-8" />
</var-def>
<var-def name="baiduxml">
   <html-to-xml>
     <var name="baiduall" />
   </html-to-xml>
</var-def>


上边的代码先使用<var标签去引用这baiduall变量。再使用<html-to-xml>标签处理
然后用baiduxml变量存放转成xml后的内容。
这里只是为了演示这个功能,其实可以简化成如下代码:

<var-def name="baiduxml">
   <html-to-xml>
     <http url="www.baidu.com"  charset="utf-8" />
   </html-to-xml>
</var-def>

这代码与上边代码意义相同。

先在这里介绍最简单的用法,时间关系,我会日后与大家分享更多的功能方式讨论。
以后再讨论:
包括使用XPath定位与用js处理代码,<file标签输出到文件中,或是将数据在转到java对象中。
  • 大小: 3.2 KB
  • 大小: 131.5 KB
分享到:
评论
3 楼 kimmking 2010-10-29  
能不能 post数据做自动登录,然后保持cookie 爬数据
2 楼 Jiagoo 2010-10-29  
www.webharvest.org这个地址已经用不了?正打算研究下!
1 楼 FeiXing2008 2010-01-16  
看来很少人喜欢一个,真不知大家喜欢什么的

相关推荐

    webharvest1-bin.zip

    webharvest是一个开源的java桌面程序,能够从论坛、网站上下载定制你自己想要的东西。因为开源,所以很好用,同时也是一个学习java和xml的好东西

    webharvest_all_2.jar

    webharvest_all_2.jar

    基于Python的蓝桥杯竞赛平台的设计与实现

    【作品名称】:基于Python的蓝桥杯竞赛平台的设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】:基于Python的蓝桥杯竞赛平台的设计与实现

    python实现基于深度学习TensorFlow框架的花朵识别项目源码.zip

    python实现基于深度学习TensorFlow框架的花朵识别项目源码.zip

    3-9.py

    3-9

    郊狼优化算法COA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    郊狼优化算法COA MATLAB源码, 应用案例为函数极值求解以及优化svm进行分类,代码注释详细,可结合自身需求进行应用

    563563565+3859

    5635356

    客户培训课程–金字塔式写作方法.ppt

    客户培训课程–金字塔式写作方法.ppt

    工具与方法工作手册.ppt

    工具与方法工作手册.ppt

    Image_1715565894150.jpg

    Image_1715565894150.jpg

    setuptools-34.3.2-py2.py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    C语言快速排序.doc

    快速排序 C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc C语言快速排序.doc

    基于Python+MobileFaceNet的静默活体检测系统的设计与实现

    【作品名称】:基于Python+MobileFaceNet的静默活体检测系统的设计与实现 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【项目介绍】: 2、实验环境 Windows 10(64位) CPU:AMD Ryzen 7 5800H RAM:16G GPU:NVIDIA RTX3060 开发工具:IntelliJ IDEA以及PyCharm 相关配置及版本: Chrome 90.0.4430.212 SpringBoot 2.2.6 Java JDK8 MyBatis 2.1.1 Mysql 8.0.25 Python 3.8 pytorch 1.7.1 torchvision 0.8.2 numpy 1.18.5 tensorboard 2.4.1 pandas 1.2.3 cuda 11.0.2 cudnn 11.2 torch 1.8.1 torchvision 0.9.1 3、模型训练命令 python train.py 4、模型测试命令

    基于JavaScript的交通时空大数据分析挖掘系统源码+运行说明.zip

    基于JavaScript的交通时空大数据分析挖掘系统源码+运行说明 项目描述 项目核心是百度地图 AMap和 echarts,用百度地图提供的API搭建的地图,项目中用到的有热力图、散点图和连线图,图表类型是由echarts提供的图表进行展示,包括饼图、柱状图 安装依赖 javascript

    麦肯锡—xx集团战略咨询项目建议书.ppt

    麦肯锡—xx集团战略咨询项目建议书.ppt

    pytest-6.2.1-py3-none-any.whl

    文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。

    麦肯锡--战略咨询培训手册.ppt

    麦肯锡--战略咨询培训手册.ppt

    graspnet-pybullet

    graspnet-pybullet

    xx电器品牌战略和营销组织架构-SHA----d.ppt

    xx电器品牌战略和营销组织架构-SHA----d.ppt

    麦肯锡-战略规划模板.ppt

    麦肯锡-战略规划模板.ppt

Global site tag (gtag.js) - Google Analytics