热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

WebCollector下载整站页面(JAVA网络爬虫)

很多业务需要下载整站页面(有时为多个站点),将页面按照网站拓扑结构存放。下面给出用JAVA爬虫WebCollector(2.09版本以上)爬取整站网页并按照网页拓扑结构存储到本地的代码

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

    下面给出用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文件夹中查看保存的网页:

WebCollector下载整站页面(JAVA网络爬虫)


推荐阅读
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
author-avatar
mobiledu2502884357
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有