package dd;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashSet;
import java.util.Set;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.tags.ImageTag;
import org.htmlparser.tags.LinkTag;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.TextExtractingVisitor;
public class ddd {
private static int BUFFER_SIZE = 8096;// 缓冲区大小
/**
* 保存图片
* 将HTTP资源另存为文件
*
* @param destUrl
* String
* @param title
* @param fileName
* String
* @throws IOException
* @throws Exception
*/
public static void saveToFile(String destUrl, String text) {
FileOutputStream fos = null;
BufferedInputStream bis = null;
HttpURLConnection httpUrl = null;
URL url = null;
byte[] buf = new byte[BUFFER_SIZE];
int size = 0;
int pos = destUrl.lastIndexOf('/');//查找图片名称开始的位置
String fileName = "";
if (pos != -1)
fileName = destUrl.substring(pos + 1, destUrl.length());//获得图片的名称
// else
// fileName = destUrl.substring(destUrl.length()-10,destUrl.length());
//
String path ="D:"+File.separator+"temp"+File.separator+"images"+File.separator;//并出本地路径D:\temp\images\
if (null != text && !"".equals(text)) {
File file = new File(path + text + File.separator);//new文件夹对象,路径是D:\temp\images\+text\
if (!file.exists()) {//如果这个文件夹不存在
file.mkdirs();//就创建这个文件夹
}
path = file.getPath();//获得创建的文件的路径
}
path = path + File.separator + fileName;//并出图片文件的路径
// 下面是的将图片保存在本地路径中
try {
url = new URL(destUrl);
httpUrl = (HttpURLConnection) url.openConnection();
// 连接指定的资源
httpUrl.connect();
// 获取网络输入流
bis = new BufferedInputStream(httpUrl.getInputStream());
// 建立文件
fos = new FileOutputStream(path);
// 保存文件
while ((size = bis.read(buf)) != -1)
fos.write(buf, 0, size);
fos.close();
bis.close();
httpUrl.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException ex) {
ex.printStackTrace();
}
//System.out.println(" \tsave completely");
}
/**
* 主方法
*
* @param argv
* String[]
*/
public static void main(String argv[]) {
String url = "http://www.whweishi.com/";
try {
getPageLinks(url);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 得到链接和链接文本
* @param page
* @throws ParserException
*/
private static void getPageLinks(String page) throws ParserException {
Parser myParser = new Parser(page);
// 设置编码
myParser.setEncoding("GBK");
String filterStr = "a";
NodeFilter filter = new TagNameFilter(filterStr);
NodeList nodeList = myParser.extractAllNodesThatMatch(filter);
for (int i = 0; i < nodeList.size(); i++) {
LinkTag linkTag = (LinkTag) nodeList.elementAt(i);
String link = linkTag.getLink(); //得到链接
// String text = linkTag.getLinkText();//得到链接的文本
TextExtractingVisitor visitor1=new TextExtractingVisitor();
Parser title_parser=new Parser(nodeList.elementAt(i).toHtml());
title_parser.visitAllNodesWith(visitor1);
String text=visitor1.getExtractedText();//得到链接的文本,上面三行代码可以把取出来的值过滤掉html代码
//text = TextProcess(text);//过滤html代码
if (link.endsWith(".asp") && text.length() > 2) {
try {
getImages(link,text);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
/**
* 过滤html代码
* @param text
* @return
*/
// private static String TextProcess(String text) {
// text = text.trim();
// text = text.replaceAll(">", "");
// text = text.replaceAll("<", "");
// text = text.replaceAll("/", "");
// text = text.replaceAll(">", "");
// text = text.replaceAll(" ", "");
// text = text.replaceAll(" ", "");
// text = text.replaceAll(""", "");
// int pos = 0;
// if ((pos = text.indexOf(":-")) != -1)
// text = text.substring(pos + 2);
//
// pos = text.indexOf("-");
// if (pos != -1)
// text = text.substring(0, pos);
// pos = text.indexOf("-");
// if (pos != -1)
// text = text.substring(0, pos);
// text = text.replace(".", "");
// text = text.replaceAll(",", "");
// text = text.replaceAll(",", "");
// return text;
// }
// private static String getTitle(String url) throws ParserException {
//
// Parser myParser = new Parser(url);
//
// // 设置编码
// myParser.setEncoding("UTF-8");
//
// String titleTag = "title";
// NodeFilter titleFilter = new TagNameFilter(titleTag);
// NodeList titleList = myParser.extractAllNodesThatMatch(titleFilter);
// int size = titleList.size();
// String title = null;
// if (size == 1) {
// TitleTag titleT = (TitleTag) titleList.elementAt(0);
// title = titleT.getTitle();
//
// }
// return title;
//
// }
/**
* 获得图像
* @param resource
* @param title
* @throws Exception
*/
public static void getImages(String link, String text)
throws Exception {
// Set
Set<String> imagesSet = new HashSet<String>();
Parser myParser = new Parser(link);
// 设置编码
myParser.setEncoding("UTF-8");
String filterStr = "img";
NodeFilter filter = new TagNameFilter(filterStr);
NodeList nodeList = myParser.extractAllNodesThatMatch(filter);
for (int i = 0; i < nodeList.size(); i++) {
ImageTag imageTag = (ImageTag) nodeList.elementAt(i);//把过滤的图片传给一个ImageTag
String imageUrl = imageTag.getImageURL();//获得图片的地址
if (!imagesSet.contains(imageUrl)) {
//System.out.print("\t saving ...");
saveToFile(imageUrl, text);
} else {
System.out.print("\t exist already,no need to save");
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
java解析html抓取网站数据采集网站信息
共43个文件
class:12个
java:12个
jar:8个
4星 · 超过85%的资源 需积分: 21 268 下载量 161 浏览量
2010-06-20
14:40:24
上传
评论 3
收藏 1.16MB RAR 举报
温馨提示
java解析html抓取网站数据采集网站信息
资源推荐
资源详情
资源评论
收起资源包目录
aa.rar (43个子文件)
aa
.project 1004B
index.jsp 2KB
.settings
org.eclipse.jdt.core.prefs 330B
.mymetadata 279B
WebRoot
WEB-INF
web.xml 381B
tyr.xml 199B
lib
htmllexer.jar 70KB
sitecapturer.jar 15KB
filterbuilder.jar 68KB
thumbelina.jar 42KB
jaxen-1.1-beta-6.jar 239KB
dom4j-1.6.1.jar 307KB
mysql-connector-java-3.1.7-bin.jar 388KB
htmlparser.jar 136KB
classes
jdbc
Jdbc.class 2KB
dd
ddd.class 4KB
xml
MyXml2.class 2KB
tyr.xml 199B
test
Test.class 1KB
MyAuthenticator.class 654B
SendMailBean.class 5KB
ccc
cc.class 3KB
aaaa
aBB.class 3KB
FundDao.class 256B
FundBean.class 2KB
aaa.class 3KB
bb
bb.class 2KB
index.jsp 2KB
META-INF
MANIFEST.MF 39B
.myeclipse
src
jdbc
Jdbc.java 1KB
dd
ddd.java 8KB
xml
MyXml2.java 723B
tyr.xml 199B
test
SendMailBean.java 5KB
Test.java 519B
MyAuthenticator.java 443B
ccc
cc.java 2KB
aaaa
aBB.java 2KB
FundBean.java 1KB
FundDao.java 47B
aaa.java 2KB
bb
bb.java 2KB
.classpath 977B
共 43 条
- 1
fandaozi01
- 粉丝: 2
- 资源: 47
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
- 6
前往页