Java 파충류 원클릭 결과 및 Excel로 저장
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.