首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

基于web-webhavrest抓取百度搜寻结果

2012-09-04 
基于web-webhavrest抓取百度搜索结果由于公司业务需要,需要做一个关键词信息抓取程序,就利用web-webharves

基于web-webhavrest抓取百度搜索结果

由于公司业务需要,需要做一个关键词信息抓取程序,就利用web-webharvest做了一个抓取程序。
java程序:

import java.io.IOException;

import org.webharvest.definition.ScraperConfiguration;
import org.webharvest.runtime.Scraper;


public class BaiduQ {
public static void main(String[] args) throws IOException {?

? ScraperConfiguration config = new ScraperConfiguration("E:/webharvest/baiduQ.xml");?
? Scraper scraper = new Scraper(config, "E:/webharvest");
? String sd = "玩具";
scraper.addVariableToContext("baiduURL", new String("http://www.baidu.com/s?wd="+sd));//设置查询地址
scraper.addVariableToContext("fileName", new String(sd));//设置查询结果保存文件
? scraper.setDebug(true);??
?? scraper.execute();?
? ?
? }?


}

对应baiduQ.xml:

<config charset="gbk">?

<!-- 页面爬取开始,按照关键词:来搜索 -->?
<var-def name="start" id="startpage">?
<!--获得类中传入连接地址-->
<var-def name="baiduURL" overwrite="false"></var-def>
<!--获得类中传入存储文件名-->
<var-def name="fileName" overwrite="false"></var-def>
<html-to-xml>?
<http url="${baiduURL}"/>?
</html-to-xml>?
</var-def>?

<!-- 获取网站列表 -->?
<var-def name="urlList" id="urlList">?
<xpath expression="//table[@class='result']">?
<var name="start"/>?
</xpath>?
</var-def>?

<!-- 循环 urlList ,并把结果写入到XML文件中 -->?
? <file action="write" path="${fileName}.xml" charset="utf-8">?
? <![CDATA[ <catalog> ]]>?
? <loop item="item" index="i">?
? <list><var name="urlList"/></list>?
? <body>?
? <xquery>?
? <xq-param name="item" type="node()"><var name="item"/></xq-param>?
? <xq-expression><![CDATA[?
? declare variable $item as node() external;?

? let $name := data($item//tr/td/a/font) ?
? let $url := data($item//tr/td/a[1]/@href)?
? return?
? <website>?
? <name>{normalize-space($name)}</name>?
? <url>{normalize-space($url)}</url>?
? </website>?
? ]]></xq-expression>?
? </xquery>?
? </body>?
? </loop>?
? <![CDATA[ </catalog> ]]>?
? </file>?
</config>

该程序运行后是把结果存入xml中,基本解决了抓取的问题。

热点排行