Java 파충류 원클릭 결과 및 Excel로 저장

3930 단어

Java 파충류 원클릭 결과 및 Excel로 저장


추출 결과를 Excel 표로 저장합니다. 공식적으로 Excel을 내보내는 강좌가 없습니다. 여기 Excel로 내보내는 강좌를 보내드리겠습니다.

가이드 팩


저는 개인적으로 Gradle을 좋아하기 때문에 Gradle 설정을 하도록 하겠습니다.
// 
compile group: 'us.codecraft', name: 'webmagic-core', version: '0.7.3'
compile group: 'us.codecraft', name: 'webmagic-extension', version: '0.7.3'

//poi  office 
compile group: 'org.apache.poi', name: 'poi', version: '4.0.1'

메이븐 씨도 하나 보내주세요.


    org.apache.poi
    poi
    4.0.1




    us.codecraft
    webmagic-core
    0.7.3


    us.codecraft
    webmagic-extension
    0.7.3

실현 원리


여기 Pipeline 인터페이스를 실현했습니다. 이 인터페이스는 결과를 저장합니다. 이 인터페이스에서 저장 작업을 합니다. 여기save () 명령에synchronized를 추가한 목적은 다중 스레드 작업 시 스레드 안전 문제가 발생하는 것을 방지하기 위해서입니다.

구현 코드


다음은 Java 코드
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import us.codecraft.webmagic.*;
import us.codecraft.webmagic.pipeline.Pipeline;
import us.codecraft.webmagic.processor.PageProcessor;
import us.codecraft.webmagic.selector.Selectable;
import us.codecraft.webmagic.utils.FilePersistentBase;


import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;


/**
 *  Excel
 * extends
 *  FilePersistentBase      
 *
 * implements:
 *  PageProcessor    
 *  Pipeline    
 */
public class WebmagicAndPoiDemo extends FilePersistentBase implements PageProcessor,Pipeline {
    public WebmagicAndPoiDemo(){
        logger = LoggerFactory.getLogger(getClass());
        site = Site.me().setTimeOut(1000).setRetryTimes(3);
        // 
        setPath("G:\\IdeaProjects\\WebMagicDemo\\Temp\\");
        filename = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) +".xls";
        // 
        workbook = new HSSFWorkbook();// sheet Name
        // 
        sheet = workbook.createSheet(" ");

        // 
        HSSFRow row = sheet.createRow(rows);
        row.createCell(0).setCellValue("id");
        row.createCell(1).setCellValue(" ");
        row.createCell(2).setCellValue(" ");
        rows++;

    }

    private String filename;
    private int rows = 0;
    private HSSFWorkbook workbook;
    private HSSFSheet sheet;
    private Site site;
    private Logger logger;


    @Override
    public Site getSite() {
        return site;
    }


    @Override/**  Pipeline  **/
    public void process(ResultItems resultItems, Task task) {
        List hrefs = resultItems.get("href");
        List texts = resultItems.get("text");
        logger.debug(hrefs.toString());
        logger.debug(texts.toString());

        for (int i=0;i

좋은 웹페이지 즐겨찾기