java1234开源博客系统
博客信息

crawler4j处理单个页面

0
发布时间:『 2016-06-06 11:30』  博客类别:java爬虫技术  阅读(6816) 评论(0)

这个类演示了crawler4j如何爬取一个网页的数据 以及抽取出标题和文本信息


代码有详细注释:

package com.java1234.collectingData;

import org.apache.http.HttpStatus;

import edu.uci.ics.crawler4j.crawler.CrawlConfig;
import edu.uci.ics.crawler4j.crawler.Page;
import edu.uci.ics.crawler4j.fetcher.PageFetchResult;
import edu.uci.ics.crawler4j.fetcher.PageFetcher;
import edu.uci.ics.crawler4j.parser.HtmlParseData;
import edu.uci.ics.crawler4j.parser.ParseData;
import edu.uci.ics.crawler4j.parser.Parser;
import edu.uci.ics.crawler4j.url.WebURL;

/**
 * 这个类演示了crawler4j如何爬取一个网页的数据
 * 以及抽取出标题和文本信息
 */
public class Downloader {

  private final Parser parser;
  private final PageFetcher pageFetcher;

  public Downloader() {
    CrawlConfig config = new CrawlConfig(); // 实例化爬虫配置
    parser = new Parser(config); // 实例化解析器
    pageFetcher = new PageFetcher(config); // 实例化页面获取器
  }

  public static void main(String[] args) {
    Downloader downloader = new Downloader();
    downloader.processUrl("http://www.java1234.com/a/yuanchuang/j2sev2/2016/0606/6221.html");
    downloader.processUrl("http://blog.java1234.com/blog/articles/103.html");
  }

  public void processUrl(String url) {
	System.out.println("处理url:"+url);
    Page page = download(url);
    if (page != null) {
      ParseData parseData = page.getParseData(); // 获取解析数据
      if (parseData != null) {
        if (parseData instanceof HtmlParseData) { // 假如是html数据类型
          HtmlParseData htmlParseData = (HtmlParseData) parseData; // 获取数据
          
          System.out.println("标题: " + htmlParseData.getTitle());
          System.out.println("纯文本长度: " + htmlParseData.getText().length());
          System.out.println("html长度: " + htmlParseData.getHtml().length());
        }
      } else {
    	  System.out.println("不能解析该页面");
      }
    } else {
    	System.out.println("不能获取页面的内容");
    }
  }

  /**
   * 下载指定Url的页面内容
   * @param url
   * @return
   */
  private Page download(String url) {
    WebURL curURL = new WebURL(); // 实例化weburl
    curURL.setURL(url); // 设置url
    PageFetchResult fetchResult = null;
    try {
      fetchResult = pageFetcher.fetchPage(curURL); // 获取爬取结果
      if (fetchResult.getStatusCode() == HttpStatus.SC_OK) { // 判断http状态是否是200 
        Page page = new Page(curURL); // 封装Page
        fetchResult.fetchContent(page); // 设置内容
        parser.parse(page, curURL.getURL()); // 解析page
        return page; // 返回page
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (fetchResult != null) { // 假如jvm没有回收 用代码回收对象 防止内存溢出
        fetchResult.discardContentIfNotConsumed(); // 销毁获取内容
      }
    }
    return null;
  }
}



运行结果:

处理url:http://www.java1234.com/a/yuanchuang/j2sev2/2016/0606/6221.html
标题: 【一头扎进J2SE】视频教程V2.0第五讲_Java知识分享网-免费Java资源下载
纯文本长度: 3078
html长度: 32052
处理url:http://blog.java1234.com/blog/articles/103.html
标题: Crawler4j的使用_Java开源博客系统-Powered by java1234
纯文本长度: 4987
html长度: 21926


完整代码:http://pan.baidu.com/s/1hsJJGgc

关键字:   crawler4j     爬虫  
关注Java1234微信公众号
博主信息
Java1234_小锋
(知识改变命运,技术改变世界)
Powered by Java1234 V3.0 Copyright © 2012-2016 Java知识分享网 版权所有