Java开发的搜索引擎
该搜索引擎的功能是爬取某网站的图片并下载的功能。当然也可以将搜索到的图片进行处理显示到自己的Web页面上。接下来将对主要的代码进行详解:
准备工作:导入jsoup-1.8.1.jar包
jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。
它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。
jsoup有一下的主要功能:
- 从一个URL,文件或字符串中解析HTML;
- 使用DOM或CSS选择器来查找、取出数据;
- 可操作HTML元素、属性、文本;
(需要jsoup包的可以留言,我发给你)
这里提及的两个方法:
第一种可以利用Jsoup解析html文本
Document document = Jsoup.parse(htmlResource);
但是需要提前获取页面html文本内容htmlResource;
第二中可以利用Jsoup解析url
Document document=Jsoup.connect(url).timeout(10000).get();
其中timeout(xx)是限定了访问的时间,超时将结束链接。
我以第二种为主,讲讲代码的实现
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
/**
*搜索引擎爬虫——抓取网页图片
*对http://www.ivrfans.cn/meishi/网站进行图片的爬取
*/
public class HttpSoup {
public static void main(String[] args) {
//解析源代码
Document document=Jsoup.connect("http://www.ivrfans.cn/meishi/").timeout(5000).get();
//通过标签img获取网页图片对应的链接
Elements elements = document.getElementsByTag("img");
for(Element element : elements){
//获取图片的链接
String imgSrc = element.attr("src");
//调用downImages方法下载图片,存于本地磁盘G:/test/images/中
downImages(imgSrc,"G:\\test\\images\\");
//打印图片信息
System.out.println("下载成功:"+imgSrc);
}
}
/**
* 根据一个图片的URL地址,通过这个URL批量下载图片到服务器的磁盘
*/
public static void downImages(String imageUrl, String filePath){
//获取图片的名称
String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));
try {
//创建文件的目录
File files = new File(filePath);
//判断文件是否存在,不存在就穿创建文件
if(!files.exists()){
files.mkdirs();
}
//获取图片文件的下载地址
URL url = new URL(imageUrl);
//连接网络图片地址
HttpURLConnection uc =(HttpURLConnection) url.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) {
e.printStackTrace();
}
}
}
相信很多人都能学会这个简单的搜索引擎,但学习不能止于现状,希望初学者能在此基础上进行扩展,继续深造,共勉!
关于jsoup的相关内容,可以查看我的另外一篇博客:
http://blog.youkuaiyun.com/gsycwh/article/details/52502666
发表人:梦想的边缘