java版web搜索爬虫系统_WebCollector下载整站页面(JAVA网络爬虫)

很多业务需要下载整站页面(有时为多个站点),将页面按照网站拓扑结构存放。

下面给出用JAVA爬虫WebCollector(2.09版本以上)爬取整站网页并按照网页拓扑结构存储到本地的代码。

代码中的抽取器可以作为一个插件复用。

WebCollector的jar包可到官网下载:WebCollector官网。进入官网后下载webcollector-版本号-bin.zip,解压得到所需jar包。

import cn.edu.hfut.dmic.webcollector.crawler.MultiExtractorCrawler;

import cn.edu.hfut.dmic.webcollector.extract.Extractor;

import cn.edu.hfut.dmic.webcollector.extract.ExtractorParams;

import cn.edu.hfut.dmic.webcollector.model.Page;

import cn.edu.hfut.dmic.webcollector.util.FileSystemOutput;

import cn.edu.hfut.dmic.webcollector.util.FileUtils;

import java.io.File;

/**

* Created by hu on 2015/6/25.

*/

public class HtmlExtractor extends Extractor{

FileSystemOutput fsOutput;

public HtmlExtractor(Page page, ExtractorParams params) {

super(page, params);

/*每次抽取都会实例化一个Extractor对象,为了让所有Extractor对象共享一个FileSystemOutput对象,

在外部实例化一个FileSystemOutput对象fsOutput,以参数形式传给每个Extractor对象,这里是获取

外部传入的FileSystemOutput对象*/

fsOutput= (FileSystemOutput) params.get("fsOutput");

}

@Override

public boolean shouldExecute() {

//我们希望对所有网页执行此抽取器

return true;

}

@Override

public void extract() throws Exception {

//本程序不需要进行网页抽取,所以extract()方法中不需要插入代码

}

@Override

public void output() throws Exception {

fsOutput.output(page);

}

public static void main(String[] args) throws Exception {

/*如果下载文件夹存在,先删除文件夹*/

File downloadDir=new File("download");

if(downloadDir.exists()){

FileUtils.deleteDir(downloadDir);

}

FileSystemOutput fsOutput=new FileSystemOutput("download");

MultiExtractorCrawler crawler=new MultiExtractorCrawler("crawl",true);

crawler.addSeed("http://36kr.com/");

crawler.addRegex("http://36kr.com/.*");

crawler.addExtractor(".*", HtmlExtractor.class, new ExtractorParams("fsOutput",fsOutput));

crawler.start(100);

}

}

程序执行后可到download文件夹中查看保存的网页:

0818b9ca8b590ca3270a3433284dd417.png

好的,您想了解关于JavaWeb搜索爬虫系统Java开源爬虫框架WebCollector的教程,主要是如何爬取搜索引擎的内容,对吗?那我来给您介绍一下。 WebCollector是一款Java开源爬虫框架,它基于Jsoup解析库,提供了一系列简单易用的API,可以帮助用户快速开发爬虫程序。WebCollector可以用于爬取各种类型的网站,包括搜索引擎。 下面是一个简单的WebCollector爬虫程序示例,可以用来爬取百度搜索结果页面的内容: ```java import cn.edu.hfut.dmic.webcollector.model.Page; import cn.edu.hfut.dmic.webcollector.net.HttpRequest; import cn.edu.hfut.dmic.webcollector.net.HttpResponse; import cn.edu.hfut.dmic.webcollector.net.Requester; import cn.edu.hfut.dmic.webcollector.plugin.berkeley.BreadthCrawler; public class BaiduSearchCrawler extends BreadthCrawler { public BaiduSearchCrawler(String crawlPath, boolean autoParse) { super(crawlPath, autoParse); this.addSeed("https://www.baidu.com/s?wd=webcollector"); } public void visit(Page page, HttpRequest httpRequest, HttpResponse httpResponse) { System.out.println(page.getHtml()); } public static void main(String[] args) throws Exception { BaiduSearchCrawler crawler = new BaiduSearchCrawler("crawl", true); crawler.setThreads(10); crawler.start(2); } } ``` 在这个示例中,我们定义了一个名为BaiduSearchCrawler的类,它继承自BreadthCrawler类。在BaiduSearchCrawler的构造函数中,我们指定了爬虫程序的爬取路径和是否自动解析网页内容。然后,我们使用addSeed()方法添加了一个种子URL,这个URL是百度搜索webcollector的结果页面。 在visit()方法中,我们定义了爬取页面时的处理逻辑,这里我们只是简单地将页面内容打印出来。在main()方法中,我们创建了一个BaiduSearchCrawler对象,设置了线程数为10,并启动了爬虫程序。 当您运行这个程序时,它将会爬取百度搜索webcollector的结果页面,并将页面内容打印出来。 当然,实际的爬虫程序往往比这个示例要复杂得多,需要考虑到各种情况和异常处理。但是,WebCollector的API非常简单易用,您可以根据自己的需求快速开发出符合要求的爬虫程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值