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

时间: 2024-11-09 17:16:23

WebCollector下载整站页面(JAVA网络爬虫)的相关文章

java网络爬虫基础学习(一)

刚开始接触java爬虫,在这里是搜索网上做一些理论知识的总结 主要参考文章:gitchat 的java 网络爬虫基础入门,好像要付费,也不贵,感觉内容对新手很友好. 一.爬虫介绍 网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网下载网页,是搜索引擎的重要组成部分. 传统爬虫: 获得URL ->放入队列 ->抓取网页,分析信息 ->新的URL ->放入队列 ->抓取网页,分析信息... ->满足一定条件,停止. 聚焦爬虫: 根据一定的网页分析算法过滤与主题无关的链接

Java 网络爬虫获取网页源代码原理及实现

Java 网络爬虫获取网页源代码原理及实现 1.网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成.传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件. 2.那么程序获取网页的原理到底是怎么回事呢?看下面的图:客服端首先向服务器端发出Http请求,之后服务器端返回相应的结果或者请求超时客户端自己报错. 服务器端发出的Http请求,实际上说是对服务器的文件的请求

学 Java 网络爬虫,需要哪些基础知识?

说起网络爬虫,大家想起的估计都是 Python ,诚然爬虫已经是 Python 的代名词之一,相比 Java 来说就要逊色不少.有不少人都不知道 Java 可以做网络爬虫,其实 Java 也能做网络爬虫而且还能做的非常好,在开源社区中有不少优秀的 Java 网络爬虫框架,例如 webmagic .我的第一份正式工作就是使用 webmagic 编写数据采集程序,当时参与了一个舆情分析系统的开发,这里面涉及到了大量网站的新闻采集,我们就使用了 webmagic 进行采集程序的编写,由于当时不知道其设

java 网络爬虫框架

java 网络爬虫框架: apache Nutch ,Heritrix等,主要参照开源社区提供的40个开源项目 文章背景: 最近要写个爬虫抓去新浪微博的数据,然后用hadoop存储后,进行分析,就在网上搜取相关资料. 网友推荐使用python来做,但鉴于本人擅长的是java,学习python需要一定的时间成本,还是选择java.一开始想自己从头写,搜到apache httpClient,  后来想着还是用开源成熟的框架来做,目前觉得apache Nutch 和Heritrix是个不错的选择,不过

关于Java网络爬虫---模拟txt文件上传操作。

业务需求是这样的,公司400业务中客户使用的,400电话号码,可以添加多个目的码你可以理解为转接号码: 这些配置的目的码我们会在网关服务器上配置成白名单,既拥有某些权限.先提出的要求是先添加或者变动目的码要及时同步到网关. 场景: 1.我们的网关服务器接受的白名单(目的码)是已txt文件上传的,数据按照制定的格式保存在txt里面. 2.利用Java网络爬虫模拟txt文件上传.------2018-4-7现在不写了,代码在公司电脑上明天总结一下在写. 原文地址:https://www.cnblog

java网络爬虫基础学习(三)

尝试直接请求URL获取资源 豆瓣电影 https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=time&page_limit=20&page_start=0 浏览器打开该地址: 发现是这样的 在这里我们需要用java抓取电影的信息,首先要找到资源链接,浏览器右键->检查打开谷歌调试工具 我们可以看到下图 有很多的资源请求,在这里我是一个个搜索,看那个是电影信息的Headers 发

开源的49款Java 网络爬虫软件

参考地址 搜索引擎 Nutch Nutch 是一个开源Java 实现的搜索引擎.它提供了我们运行自己的搜索引擎所需的全部工具.包括全文搜索和Web爬虫. Nutch的创始人是Doug Cutting,他同时也是Lucene.Hadoop和Avro开源项目的创始人. Nutch诞生于2002年8月,是Apache旗下的一个用Java实现... JAVA爬虫 WebCollector 爬虫简介: WebCollector是一个无须配置.便于二次开发的JAVA爬虫框架(内核),它提供精简的的API,只

【转】44款Java 网络爬虫开源软件

原帖地址 http://www.oschina.net/project/lang/19?tag=64&sort=time 极简网络爬虫组件 WebFetch WebFetch 是无依赖极简网页爬取组件,能在移动设备上运行的微型爬虫. WebFetch 要达到的目标: 没有第三方依赖jar包 减少内存使用 提高CPU利用率 加快网络爬取速度 简洁明了的api接口 能在Android设备上稳定运行 小巧灵活可以方便集成的网页抓取组件 使用...更多WebFetch信息 开源爬虫框架 Guozhong

Java 网络爬虫技术

最近在项目中遇到运用到网络爬虫技术的一些问题,在此写下一片记录总结,同时给出一个小的例子,提供给朋友下载研究学习. 该项目采用网络抓取图片数据.流式布局.响应式布局.懒加载.动态切换加载实现web网页抓取. 下面给出具体实现的一些图片效果: 1.实现网络抓取图片数据 2.实现动态切换加载 3.实现懒加载 4.实现响应式布局 以上是几个关键点的实现,具体的代码请下载:alioth_spider ;开发工具:MyEclipse 2014 仅在此记录学习分享,不断积累进步.