获取网页上的所有QQ号码,并生成exel报表
需要的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报表的更多相关文章
- 获取网页上数据(图片、文字、视频)-b
Demo地址:http://download.csdn.net/detail/u012881779/8831835 获取网页上所有图片.获取所有html.获取网页title.获取网页内容文字... . ...
- 如何获取网页上的LOGO
一般公司网页上的图片都会禁止右键另存为,用截图工具接下来的图会带背景色,PS成背景透明有点费时间. 用Google Chrome 或Firefox 打开目标网页,右键点击审查元素,将鼠标放在图片上,一 ...
- 用PHP获取网页上的信息相对于xpath效率低点
用php实现对网页的抓取,及信息的收集,其实就是爬数据,具体实现步骤如下,首先应引入两个文件curl_html_get.php和save_file.php文件,两个文件具体代码是这样的curl_htm ...
- C#注册URL协议,使用浏览器打开本地程序,类似网页上点了QQ交谈打开本地QQ客户端程序
本教程适用于Windows系统 从浏览器上打开本地程序,主要用到了本地URL协议,其实主要就是改注册表 先建立一个项目,我建的是控制台项目 在Program.cs写2个静态方法用来添加注册表.移除注册 ...
- Android获取网页上的图片的代码
public Bitmap getWebBitmap(String imgUrl) { Bitmap bitmap =null; try { InputStream inputStream = nul ...
- js获取网页上选中的部分,包含html代码
function getSelectedContents(){ if (window.getSelection) { //chrome,firefox,opera var ra ...
- C# 获取网页数据、获取本机IP 分类: C# 2014-12-16 14:59 308人阅读 评论(0) 收藏
说明: (1) http://www.3322.org/dyndns/getip 这个网址可以获取本机IP,读取的内容就是本机IP (2)方法经测试,可以实现. (3)参考:http://www.cn ...
- C#获取网页信息并存入数据库
1,获取以及商品分类信息 给一网页获取网页上商品信息的分类 using Skay.WebBot; using System; using System.Collections.Generic; usi ...
- 在线获取访客QQ号码的原理及实现方法
原文地址:http://www.piaoyi.org/network/get-qq-haoma-js.html 正 文: 最近,飘易收到不少在线获取网站访客QQ号码的促销推广邮件,有不少商用网站挖掘了 ...
随机推荐
- 一次解决spark history server日志不见
通过cloudera的旧版VM(centos6版本)跑spark,之后,想看一下日志研究一下job,stage以及task,压力很大的发现完全没有日志,180088页面打开后: Event log d ...
- Qt学习之秒表的实现(StopWatch) (转)
秒表对于我来说并不陌生,在之前自己学习单片机时,实现过秒表和数字钟:基本思路:开启单片机带的定时器,并设置它没10ms溢出一次,分别用三个变量hour,minute,secong记录秒表的时分秒,然后 ...
- 8.Python编写登录接口
1.python需安装flask,在命令行窗口输入:pip3 install flask 2.代码如下所示: from flask import Flask,request,jsonify,sessi ...
- git仓库
关于仓库,我们先搞清楚三个概念:本地仓库.远程仓库和上游仓库.本地仓库是从远程仓库clone出来的,远程仓库可以从上游仓库fork出来.这里的clone和fork都是复制的意思,区别是本地和远程都是针 ...
- 使用sigaction来取代signal作为信号处理器函数
早期ISO C提供了像这样的函数来支持自定义信号处理 typedef void (*sighandler)(int); sighandler signal(sighandler func); 但是由于 ...
- Hibernate学习2—Hibernate4 CRUD体验初步
接着上一节,工程结构: jar包没有变化: 一.HibernateUtil 封装: com.cy.util.HibernateUtil.java: package com.cy.util; impor ...
- 阻塞队列之三:SynchronousQueue同步队列 阻塞算法的3种实现
一.SynchronousQueue简介 Java 6的并发编程包中的SynchronousQueue是一个没有数据缓冲的BlockingQueue,生产者线程对其的插入操作put必须等待消费者的移除 ...
- Velocity基本常用语法
Velocity是一个基于java的模板引擎(template engine),它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象.作为一个比较完善 ...
- Java开发中所涉及的常用远程调用
根据<Spring in Action>一书中指出,Java开发中常见的远程过程调用(RPC),常见的有一下四种方式: 1.远程方法调用(RMI) 2.Caucho的Hessian和Bur ...
- 使用exe4j把java程序生成可执行的.exe文件
exe4j可以很容易把一个jar打成exe. 下载地址:http://dl.dbank.com/c0owlopqf8 1.下载的安装文件,里面包含一个注册码生成的工具 2.安装exe4j以及破解(注 ...