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("写入完毕");    
    }    
}

java爬虫实战的更多相关文章

  1. java爬虫中jsoup的使用

    jsoup可以用来解析HTML的内容,其功能非常强大,它可以向javascript那样直接从网页中提取有用的信息 例如1: 从html字符串中解析数据 //直接从字符串中获取 public stati ...

  2. Java基础-爬虫实战之爬去校花网网站内容

    Java基础-爬虫实战之爬去校花网网站内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 爬虫这个实现点我压根就没有把它当做重点,也没打算做网络爬虫工程师,说起爬虫我更喜欢用Pyt ...

  3. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  4. Java爬虫项目实战(一)

    目的: 通过网络爬虫爬取中国最小粒度的区域维度信息,包括省(Province) .市(City).县(County).镇(town).村委会(village) 主网站链接: http://www.st ...

  5. Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗

    Pyhton爬虫实战 - 抓取BOSS直聘职位描述 和 数据清洗 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网 ...

  6. Pyhton爬虫实战

    Pyhton爬虫实战 零.致谢 感谢BOSS直聘相对权威的招聘信息,使本人有了这次比较有意思的研究之旅. 由于爬虫持续爬取 www.zhipin.com 网站,以致产生的服务器压力,本人深感歉意,并没 ...

  7. 学校实训作业:Java爬虫(WebMagic框架)的简单操作

    项目名称:java爬虫 项目技术选型:Java.Maven.Mysql.WebMagic.Jsp.Servlet 项目实施方式:以认知java爬虫框架WebMagic开发为主,用所学java知识完成指 ...

  8. PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二手急速响应捡垃圾平台_3(附源码持续更新)

    说明 文章首发于HURUWO的博客小站,本平台做同步备份发布. 如有浏览或访问异常图片加载失败或者相关疑问可前往原博客下评论浏览. 原文链接 PYTHON爬虫实战_垃圾佬闲鱼爬虫转转爬虫数据整合自用二 ...

  9. webmagic的设计机制及原理-如何开发一个Java爬虫

    之前就有网友在博客里留言,觉得webmagic的实现比较有意思,想要借此研究一下爬虫.最近终于集中精力,花了三天时间,终于写完了这篇文章.之前垂直爬虫写了一年多,webmagic框架写了一个多月,这方 ...

随机推荐

  1. Linux下Memcached-1.4.10安装

    memcache是一款流行的缓存产品,它分为两个部分:一个是运行在服务器端的memcached进程,一个是在客户端进行调用获取缓存中数据客户端,例如比较常用的PHP客户端.这里,记录一下安装服务器端的 ...

  2. Panel扩展 圆角边框,弧形边框

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; u ...

  3. nova分析(2)—— nova-all

    nova-all是一个用来启动所有nova服务的辅助脚本,注意只是启动所有服务,不包括停止和重启等功能. nova-all的入口在 nova.cmd.all:main ,脚本也比较简单,这儿就贴下代码 ...

  4. Python基础教程【读书笔记】 - 2016/7/7

    希望通过博客园持续的更新,分享和记录Python基础知识到高级应用的点点滴滴! 第四波:第5章  条件.循环和其他语句 [总览]  深入介绍条件语句和循环语句,随后会看到列表推导式如何扮演循环和条件语 ...

  5. sublime_text3 用户配置

    { "auto_complete_triggers": [ { "characters": "", "selector" ...

  6. (微信API接口开发) 使用HttpWebRequest进行请求时发生错误:基础连接已关闭,发送时发生错误处理

    最近调试原来的微信模拟登陆时发生了“基础连接已关闭,发送时发生错误”的错误提示,原来都是好好的,只是很久没用了. 出错代码如下: HttpWebRequest req = (HttpWebReques ...

  7. 进程间通信IPC之--共享内存

    每个进程各自有不同的用户地址空间,任何一个进 程的全局变量在另一个进程中都看不到,所以进程之间要交换数据必须通过内核,在内核中开辟一块缓冲 区,进程1把数据从用户空间拷到内核缓冲区,进程2再从内核缓冲 ...

  8. 使用 as 和 is 运算符安全地进行强制转换

    由于对象是多态的,因此基类类型的变量可以保存派生类型. 若要访问派生类型的方法,需要将值强制转换回该派生类型. 不过,在这些情况下,如果只尝试进行简单的强制转换,会导致引发 InvalidCastEx ...

  9. C#学习笔记三: C#2.0泛型 可控类型 匿名方法和迭代器

    前言 C#1.0的委托特性使方法作为其他方法的参数来传递,而C#2.0 中提出的泛型特性则使类型可以被参数化,从而不必再为不同的类型提供特殊版本的实现方法.另外C#2.0还提出了可空类型,匿名方法和迭 ...

  10. ThreadPoolExecutor使用介绍

    private static ExecutorService exec = new ThreadPoolExecutor(8, 8, 0L,TimeUnit.MILLISECONDS, new Lin ...