首页 > 代码库 > WebCollector下载整站页面(JAVA网络爬虫)
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目录中查看保存的网页:
WebCollector下载整站页面(JAVA网络爬虫)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。