您的位置:首页 > 编程语言 > Java开发

Java语言自写初级爬虫一

2015-11-26 08:19 435 查看
学了好久的JAVA,C,……语言,可是不会用,东西我们也知道,这就要求我们要多看别人代码,参考,学习,模仿,创新。这是一个初级的爬虫程序,有待改进……

package com.ftx.html;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;

import org.jsoup.Jsoup;
import org.jsoup.helper.HttpConnection;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
* use java develop pa chong
*
* @author FTX
* @version v1.0
*/

public class HtmlJsoup {
static URL urlObj = null;
static URLConnection uc = null;
static InputStreamReader in = null;

public static void main(String[] args) {

// 根据网址和页面编码集,获取网页源码
String html = getHtmlResourceByURL("http://www.baidu.com/",
"utf-8");
// System.out.println(html);
// 解析源代码
Document document = Jsoup.parse(html);
// 获取网页图片
Elements elements = document.getElementsByTag("img");
for (Element element : elements) {
String imgSrc = element.attr("src");
System.out.println("正在下载的图片地址" + imgSrc);
downImages(imgSrc,"E:\\JavaScript");
System.out.println("download success");
}
// 解析我们需要下载的内容部分

}

/**
* 根据一个图片的URL地址,通过这个URL批量下载图片
*
* @author FTX
* @param imgURL
*            要下载的图片服务器地址
* @param imgesURL
*            保存路径
* @return 无
*/
public static void downImages(String imgURL, String filePath) {
String fileName = imgURL.substring(imgURL.lastIndexOf("/"));
try {
File files = new File(filePath);
if (files.exists()) {
files.mkdirs();
}
// 获取下载地址文件

urlObj = new URL(imgURL);
//获取网络图片地址
HttpURLConnection uc=(HttpURLConnection)urlObj.openConnection();
//获取连接的输出流
InputStream is=uc.getInputStream();
//创建文件
File file=new File(filePath+fileName);

//创建输出流,写入文件

FileOutputStream out=new FileOutputStream(file);
int i=0;
while ((i=is.read())!=-1){
out.write(i);;
}

is.close();
out.close();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

/**
* 根据网址和页面编码集,获取网页源码
*
* @author FTX
* @param url
* @param encoding
* @return String 网页源码
*/
public static String getHtmlResourceByURL(String url, String encoding) {

// webpage storage
StringBuffer source = new StringBuffer();
try {
// 获取网络连接
urlObj = new URL(url);
// 打开网连接
uc = urlObj.openConnection();
// 建立网络的输入流
in = new InputStreamReader(uc.getInputStream(), encoding);
// 缓冲写入的文件流
BufferedReader reader = new BufferedReader(in);
// 循环读取
String tempLine = null;
while ((tempLine = reader.readLine()) != null) {
source.append(tempLine + "\n");

}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("net connection timeOut …………");
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

return source.toString();
}

}


代码中的解释已经很详细了,不再多说。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: