需要的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. 13.Python接口自动化测试 -- 豆瓣

    1.代码如下所示: import requests,unittest import json import HTMLTestRunner class TestDouBan(unittest.TestC ...

  2. mysql大数据量之limit优化

    背景:当数据库里面的数据达到几百万条上千万条的时候,如果要分页的时候(不过一般分页不会有这么多),如果业务要求这么做那我们需要如何解决呢?我用的本地一个自己生产的一张表有五百多万的表,来进行测试,表名 ...

  3. OPCClient和OPCServer在Windows上运行方式的恩怨

    http://www.diangon.com/wenku/PLC/201504/00021970.html 近段时间,遇到不少人都被OPCClient与OPCServer之间的通讯搞得头大,通过几次远 ...

  4. CAsyncSocket只传输了一部分数据(UDP),后面是乱码

    void CCAsyncSocketDlg::OnBnClickedBtnSend() { UpdateData(TRUE); TCHAR ipstr[INET_ADDRSTRLEN]; DWORD ...

  5. 全排列函数C++实现

    例题:求由123456789构成的所有九位数字 1 用C++的next_permutation函数 #include <iostream> #include <stdio.h> ...

  6. 基于python的测试框架behave----context

    使用behave时,每一步对应的方法都需要参数context,那么context是什么,为什么都需要传这个对象? 在所有用例中的context都是behave.runner.Context类的一个实例 ...

  7. Web项目中定时任务无法绑定SessionFactory的问题解决

    正常我们在web开发中,由于需要在页面上或者脱离事务时使用到懒加载对应的对象,一般都采用Open Session In View模式.   Open Session In View   OpenSes ...

  8. PyQt 5布局管理

    绝对定位 绝对定位有以下限制 1.如果调整窗口,控件的大小和位置不会改变 2.在各种平台上应用程序看起来不会一样 3.如果改变字体,我们的应用程序的布局就会改变 4.如果我们决定改变我们的布局,我们必 ...

  9. 【POJ】1061 青蛙的约会 / 【BZOJ】1477(扩欧)

    青蛙的约会 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 119148   Accepted: 25070 Descript ...

  10. Oralce OMF 功能详解

    OMF,全称是Oracle_Managed Files,即Oracle文件管理,使用OMF可以简化管理员的管理工作,不用指定文件的名字.大小.路径,其名字,大小, 路径由oracle 自动分配.在删除 ...