需要的jar如下:

package jsoup.zr.com.utils;
/**
*
* @author LF
*
*/
public class Constant { /**
* 网站链接地址ַ
*/
public static String URL = "http://bbs.tianya.cn/post-enterprise-758850-1.shtml"; /**
* 生成目标文件所存放的路径
* 注意:路径请用"/",勿用"\"
*/
public static String PATH = "/Users/apple/Desktop/"; /**
* exel文件的命名
*/
public static String NAME = "QQ"; /**
* 正则表达式(第一位1-9之间的数字,第二位0-9之间的数字,数字范围4-14)
*/
public static String QQREGEX = "[1-9][0-9]{4,14}"; /**
* 正则表达式(QQ、微信号、手机)
*/
public static String QQ_WEIXIN_PHONE = "^[a-zA-Z0-9_-]{5,19}$";
}
package jsoup.zr.com.utils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element; /**
*
* @author LF
*
*/
public class ParseHTML { public static void main(String[] args) {
List<String> list = getInfoByURL(Constant.URL,Constant.QQREGEX);
ProduceExel.writeByList(list, "QQ号码"); } /**
* 获取网页内容
*/
public static List<String> getInfoByURL(String urlString,String regexString){
List<String> list = new ArrayList<String>();
URL url = null;
try {
url = new URL(urlString);
} catch (MalformedURLException e) {
e.printStackTrace();
}
// 打开连接
URLConnection connection = null;
try {
connection = url.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader bReader = null;
try {
// 读取输入流
bReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
} catch (IOException e) {
e.printStackTrace();
} Pattern pattern = Pattern.compile(regexString);
String line = null;
try {
while ((line = bReader.readLine()) != null) {
Matcher matcher = pattern.matcher(line);
// 如果匹配,存起来
while (matcher.find()) {
String str = matcher.group();
list.add(str);
}
}
} catch (IOException e) {
e.printStackTrace();
} return list;
} }
package jsoup.zr.com.utils;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.List;
import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
/**
*
* @author LF
*
*/
public class ProduceExel { /**
* 通过集合list生成exel报表
* @param list 集合
* @param lineName exel首行的名称
* @throws IOException 异常
*/
public static void writeByList(List<String> list,String lineName){
System.out.println(list.size());
// 如果没有数据,不做处理
if (list==null || list.size()==0) {
return;
}
String path = Constant.PATH+Constant.NAME+".xls";
System.out.println(path);
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(new File(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
} // 初始化一个HSSFWorkbook对象
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个表
HSSFSheet sheet = workbook.createSheet("lf");
// 创建行
HSSFRow row = sheet.createRow(0);
// 创建单元格
HSSFCell cell0 = row.createCell(0);
cell0.setCellValue(new HSSFRichTextString(lineName));
int i = 0;
// 遍历
for (String str : list) {
System.out.println("====="+str);
// 创建行
HSSFRow rowi = sheet.createRow(i+1);
// 创建单元格
HSSFCell celli = rowi.createCell(0);
// 单元格添加内容
celli.setCellValue(new HSSFRichTextString(str));
i++;
}
// 写(输出)
try {
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
} /**
* 通过集合map生成exel报表
* @param map 集合
* @param lineName exel首行的名称
* @throws IOException 异常
*/
public static void write(Map<String, String> map,String lineName){
// 如果没有数据,不做处理
if (map==null || map.size()==0) {
return;
}
String path = Constant.PATH+Constant.NAME+".xls";
System.out.println(path);
OutputStream outputStream = null;
try {
outputStream = new FileOutputStream(new File(path));
} catch (FileNotFoundException e) {
e.printStackTrace();
} // 初始化一个HSSFWorkbook对象
HSSFWorkbook workbook = new HSSFWorkbook();
// 创建一个表
HSSFSheet sheet = workbook.createSheet("lf");
// 创建行
HSSFRow row = sheet.createRow(0);
// 创建单元格
HSSFCell cell0 = row.createCell(0);
cell0.setCellValue(new HSSFRichTextString(lineName));
int i = 0;
// 遍历
for (String str : map.values()) {
// 创建行
HSSFRow rowi = sheet.createRow(i+1);
// 创建单元格
HSSFCell celli = rowi.createCell(0);
// 单元格添加内容
celli.setCellValue(new HSSFRichTextString(str));
i++;
}
// 写(输出)
try {
workbook.write(outputStream);
} catch (IOException e) {
e.printStackTrace();
}
} }
package jsoup.zr.com.utils;
/**
*
* @author LF
*
*/
public class Verify { /**
* 验证是否是QQ号码
* @param QQNumber
* @return
*/
public static boolean verifyQQNumber(String QQNumber){
System.out.println(QQNumber.matches(Constant.QQREGEX));
return QQNumber.matches(Constant.QQREGEX);
} }

获取网页上的所有QQ号码,并生成exel报表的更多相关文章

  1. 获取网页上数据(图片、文字、视频)-b

    Demo地址:http://download.csdn.net/detail/u012881779/8831835 获取网页上所有图片.获取所有html.获取网页title.获取网页内容文字... . ...

  2. 如何获取网页上的LOGO

    一般公司网页上的图片都会禁止右键另存为,用截图工具接下来的图会带背景色,PS成背景透明有点费时间. 用Google Chrome 或Firefox 打开目标网页,右键点击审查元素,将鼠标放在图片上,一 ...

  3. 用PHP获取网页上的信息相对于xpath效率低点

    用php实现对网页的抓取,及信息的收集,其实就是爬数据,具体实现步骤如下,首先应引入两个文件curl_html_get.php和save_file.php文件,两个文件具体代码是这样的curl_htm ...

  4. C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序

    本教程适用于Windows系统 从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表 先建立一个项目,我建的是控制台项目 在Program.cs写2个静态方法用来添加注册表.移除注册 ...

  5. Android获取网页上的图片的代码

    public Bitmap getWebBitmap(String imgUrl) { Bitmap bitmap =null; try { InputStream inputStream = nul ...

  6. js获取网页上选中的部分,包含html代码

    function getSelectedContents(){     if (window.getSelection) { //chrome,firefox,opera         var ra ...

  7. C# 获取网页数据、获取本机IP 分类: C# 2014-12-16 14:59 308人阅读 评论(0) 收藏

    说明: (1) http://www.3322.org/dyndns/getip 这个网址可以获取本机IP,读取的内容就是本机IP (2)方法经测试,可以实现. (3)参考:http://www.cn ...

  8. C#获取网页信息并存入数据库

    1,获取以及商品分类信息 给一网页获取网页上商品信息的分类 using Skay.WebBot; using System; using System.Collections.Generic; usi ...

  9. 在线获取访客QQ号码的原理及实现方法

    原文地址:http://www.piaoyi.org/network/get-qq-haoma-js.html 正 文: 最近,飘易收到不少在线获取网站访客QQ号码的促销推广邮件,有不少商用网站挖掘了 ...

随机推荐

  1. nginx 通过proxy_next_upstream实现容灾和重复处理问题

    ngx_http_proxy_module 模块中包括proxy_next_upstream指令 语法: proxy_next_upstream error | timeout | invalid_h ...

  2. 一次解决spark history server日志不见

    通过cloudera的旧版VM(centos6版本)跑spark,之后,想看一下日志研究一下job,stage以及task,压力很大的发现完全没有日志,180088页面打开后: Event log d ...

  3. Hadoop的简单序列化框架

    Hadoop提供了一个加单的序列化框架API,用于集成各种序列化实现.该框架由Serialization实现. 其中Serialization是一个接口,使用抽象工厂的设计模式,提供了一系列和序列化相 ...

  4. Linux 制作补丁 打补丁 撤销补丁

    1.制作补丁 diff - 逐行比较文件 格式 diff   参数   旧文件/旧文件夹   新文件/新文件夹 -N   将不存在的文件看作是空的 -a   将所有文件都视为文本文件 -u   以合并 ...

  5. 常见企业IT支撑【1、办公网络IP地址规划】

    规划思路如下,可灵活变化

  6. 系统管理员都要知道的 30 个 Linux 系统监控工具

    1. top - 进程活动监控命令 top 命令会显示 Linux 的进程.它提供了一个运行中系统的实时动态视图,即实际的进程活动.默认情况下,它显示在服务器上运行的 CPU 占用率最高的任务,并且每 ...

  7. CentOS 7 named设置主从复制

    前两篇文章介绍了named的安装和配置forward. 本文将介绍named的主从复制. 在从named的配置中添加: zone "weiheng.ink" IN { type s ...

  8. css 字体英文对照

    宋体: SimSun 黑体: SimHei 华文细黑: STHeiti Light [STXihei] 华文黑体: STHeiti 微软雅黑: Microsoft YaHei 微软正黑体: Micro ...

  9. Appium+python自动化25-windows版appium_desktop_V1.7.1

    appium_desktop_v1.2.6 1.appium_desktop在github上最新下载地址:releases/tag/v1.2.6 2.下载后傻瓜式安装,然后启动appium,这个界面跟 ...

  10. [转]第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

    目录: 1.gradle的概念 2.gradle配置jar包,和libs文件夹导入jar包的区别 3.签名打包: (1)Studio (2)命令行 (3)gradle wrapper的原理 4.Bui ...