java搜索引擎源码_Java开发搜索引擎爬虫

1 packagecom.peidon.html;2

3 importjava.io.BufferedReader;4 importjava.io.File;5 importjava.io.FileOutputStream;6 importjava.io.IOException;7 importjava.io.InputStream;8 importjava.io.InputStreamReader;9 importjava.net.HttpURLConnection;10 importjava.net.URL;11 importjava.net.URLConnection;12

13 importorg.jsoup.Jsoup;14 importorg.jsoup.nodes.Document;15 importorg.jsoup.nodes.Element;16 importorg.jsoup.select.Elements;17

18

19 /**

20 *@authorsunshine21 *@version1.022 * @date:2015年8月15日 上午9:01:1323 * @description: Java开发搜索引擎爬虫24 * jsoup 类似jQuery的强大功能,什么方便解析操作HTML DOM 树25 * 关联jar包 jsoup-1.8.3.jar26 */

27 public classHttpSoup {28

29 public static voidmain(String[] args) {30

31 //根据网址和页面的编码集 获取网页的源代码

32 String htmlResource = getHtmlResourceByUrl("http://www.ui.cn/", "UTF-8");33 //System.out.println(htmlResource);34

35 //解析源代码

36 Document document =Jsoup.parse(htmlResource);37

38 //获取网页的图片39 //网页图片标签

40 Elements elements = document.getElementsByTag("img");41

42 for(Element element : elements){43 String imgSrc = element.attr("src");44 //System.out.println(imgSrc);

45 downImages(imgSrc,"D:\\test\\images\\");46 System.out.println("下载成功:"+imgSrc);47 //System.out.println(imgSrc.substring(imgSrc.lastIndexOf("/")));

48 }49 }50

51 /**

52 * 根据一个图片的URL地址,通过这个URL批量下载图片到服务器的磁盘53 *@paramimageUrl 要下载的服务器地址54 *@paramfilePath 下载完成后保存到服务器的图片地址55 *56 */

57 public static voiddownImages(String imageUrl, String filePath){58 String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));59

60 try{61 //创建文件的目录

62 File files = newFile(filePath);63 //判断文件是否存在

64 if(!files.exists()){65 files.mkdirs();66 }67 //获取图片文件的下载地址

68 URL url = newURL(imageUrl);69 //连接网络图片地址

70 HttpURLConnection uc =(HttpURLConnection) url.openConnection();71 //获取连接的输出流

72 InputStream is =uc.getInputStream();73

74 //创建文件

75 File file = new File(filePath +fileName);76 //创建输出流,写入文件

77 FileOutputStream out = newFileOutputStream(file);78 int i = 0;79 while((i = is.read()) != -1){80 out.write(i);81 }82 is.close();83 out.close();84 } catch(Exception e) {85 e.printStackTrace();86 }87 }88

89 /**

90 * 根据网址和页面的编码集 获取网页的源代码91 *@paramurl92 *@paramencoding93 *@return

94 */

95 public staticString getHtmlResourceByUrl(String url, String encoding){96

97 //声明一个存储网页源代码的容器

98 StringBuffer buff = newStringBuffer();99

100 URL urlObj = null;101 URLConnection uc = null;102 InputStreamReader in = null;103 BufferedReader reader = null;104 try{105 //建立网络链接

106 urlObj = newURL(url);107

108 //打开网络链连接

109 uc =urlObj.openConnection();110

111 //建立网络的输入流

112 in = newInputStreamReader(uc.getInputStream(),encoding);113

114 //缓冲写入的文件流

115 reader = newBufferedReader(in);116

117 String tempLine = null;118

119 //循环读取文件流

120 while((tempLine = reader.readLine()) != null){121 buff.append(tempLine + "\n"); //循环追加数据

122 }123

124

125

126 } catch(Exception e) {127

128 e.printStackTrace();129 System.out.println("Conection timeout ...");130 } finally{131 if(in != null){132 try{133 in.close();134 } catch(IOException e) {135 e.printStackTrace();136 }137 }138

139 }140

141 returnbuff.toString();142 }143 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值