导航

java爬虫实战

Posted on 2016-05-23 10:23  4565892  阅读(152)  评论(0)    收藏  举报

1.下载jxl。jar包,网上多的是

2.编写如下代码:

  package com.beyond.url;

import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import jxl.Workbook;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

public class TestDemo {
    
    /**
     * 获取整个文本内容
     * @param urlHtml
     * @param Language
     * @return
     */
    public String getContent(String urlHTML)
    {
        String temp;
        StringBuffer sb=new StringBuffer();
        try {
            URL    ulr=new URL(urlHTML);
            BufferedReader b=new BufferedReader(new InputStreamReader(ulr.openStream(),"utf-8"));
            while ((temp=b.readLine())!=null) {
                sb.append(temp);
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sb.toString();
        
        
    }
    
    
    
    /**
     * A 标签文字获取    
     * @param content
     * @return
     */
            
    public List<String> getTagA_WenZi(String content)
    {
        
        String regex = "<a.*?</a>";
        Pattern pa = Pattern.compile(regex);
        Matcher ma = pa.matcher(content);
        List<String> list = new ArrayList<String>();
        while (ma.find()) {
            list.add(ma.group());
        }
        return list;
        
    }
    /**
     * Span标签文字获取
     * @param content
     * @return
     */
    public List<String> getTagSpan_WenZi(String content)
    {
        
        String regex = "<span.*?</span>";
        Pattern pa = Pattern.compile(regex);
        Matcher ma = pa.matcher(content);
        List<String> list = new ArrayList<String>();
        while (ma.find()) {
            list.add(ma.group());
        }
        return list;
        
    }
    /**
     * P 标签文字获取
     * @param content
     * @return
     */
    
    public List<String> getTagP_Wenzi(String content)
    {
        String regex = "<p.*?</p>";
        Pattern pa = Pattern.compile(regex);
        Matcher ma = pa.matcher(content);
        List<String> list = new ArrayList<String>();
        while (ma.find()) {
            list.add(ma.group());
        }
        return list;
        
        
    }
    /**
     *
     * div 标签获取
     */
    public List<String> getTagDiv_Wenzi(String content)
    {
        String regex = "<div.*?</div>";
        Pattern pa = Pattern.compile(regex);
        Matcher ma = pa.matcher(content);
        List<String> list = new ArrayList<String>();
        while (ma.find()) {
            list.add(ma.group());
        }
        return list;
        
        
    }
    
    
     /**
     * 写入Excel
     * @throws IOException
     * @throws RowsExceededException
     * @throws WriteException
     */
    public  void WriteToExcel(WritableWorkbook workbook,WritableSheet sheet,int cols,int rows,String Data,Label[] lb) throws IOException, RowsExceededException, WriteException
    {
        
        lb[rows]=new Label(cols,rows,Data);
        Label labe1=new Label(1,0,"TagName_Of_A_Information");
        sheet.addCell(labe1);
        
        Label labe2=new Label(6,0,"TagName_Of_Span_Information");
        sheet.addCell(labe2);
        //Label label=new Label(cols,rows,Data);
        sheet.addCell(lb[rows]);
        
         
    }
    
    public static void main(String[] args) throws InterruptedException, RowsExceededException, WriteException, IOException {
        TestDemo t=new TestDemo();
        String content=t.getContent("https://www.oracle.com/sun/index.html");
        //System.out.println(content);
        List<String> aTagString=t.getTagA_WenZi(content);
        List<String> spanTagString=t.getTagSpan_WenZi(content);
        List<String> pTagString=t.getTagP_Wenzi(content);
        List<String> divTagString=t.getTagP_Wenzi(content);
        WritableWorkbook workbook=Workbook.createWorkbook(new File("D:\\Data\\OracleTestDemo.xls"));
        WritableSheet sheet=workbook.createSheet("Information", 0);
        sheet = workbook.getSheet(0);
        System.out.println("a标签摘取");
         Label[] ji=new Label[aTagString.size()+spanTagString.size()];
        for (int i = 0; i < aTagString.size(); i++) {
            
            String aString=aTagString.get(i).replaceAll("<[^>]*>|&nbsp;|\t|\n|&[\\s\\S]*;{1}","").trim();
            
            if (aString!="") {
                t.WriteToExcel(workbook,sheet,1,i+1,aString,ji);
            }
            
            
            
            
        }
        System.out.println("Span标签摘取");
        for (int i = 0; i < spanTagString.size(); i++) {
            
            String aString=spanTagString.get(i).replaceAll("<[^>]*>|&nbsp;|\t|\n|&[\\s\\S]*;{1}","").trim();
            if (aString!=null) {
                //System.out.println(aString);
                t.WriteToExcel(workbook,sheet,6,i+1,aString,ji);
            
            }
        }
        
        System.out.println("P标签摘取");
        for (int i = 0; i < pTagString.size(); i++) {
            
            String aString=pTagString.get(i).replaceAll("<[^>]*>|&nbsp;|\t|\n|&[\\s\\S]*;{1}","").trim();
            if (aString!=null) {
                //System.out.println(aString);
                t.WriteToExcel(workbook,sheet,10,i+1,aString,ji);
            
            }
        }
        
        System.out.println("Div标签摘取");
        for (int i = 0; i < divTagString.size(); i++) {
            
            String aString=divTagString.get(i).replaceAll("<[^>]*>|&nbsp;|\t|\n|&[\\s\\S]*;{1}","").trim();
            if (aString!=null) {
                //System.out.println(aString);
                t.WriteToExcel(workbook,sheet,10,i+1,aString,ji);
            
            }
        }
        
        //开始写入和关闭文件
        workbook.write();
        workbook.close();
        System.out.println("写入完毕");    
    }    
}