Java开发的搜索引擎

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.csdn.net/gsycwh/article/details/52502666



发表人:梦想的边缘

你可能感兴趣的:(搜索引擎)