首页 > 编程 > Java > 正文

Java实现的爬虫抓取图片并保存操作示例

2019-11-26 09:41:11
字体:
来源:转载
供稿:网友

本文实例讲述了Java实现的爬虫抓取图片并保存操作。分享给大家供大家参考,具体如下:

这是我参考了网上一些资料写的第一个java爬虫程序

本来是想获取煎蛋网无聊图的图片,但是网络返回码一直是503,所以换了网站

import java.io.BufferedReader;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.net.MalformedURLException;import java.net.URL;import java.net.URLConnection;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;/* * 网络爬虫取数据 * * */public class JianDan {  public static String GetUrl(String inUrl){    StringBuilder sb = new StringBuilder();    try {      URL url =new URL(inUrl);      BufferedReader reader =new BufferedReader(new InputStreamReader(url.openStream()));      String temp="";      while((temp=reader.readLine())!=null){        //System.out.println(temp);        sb.append(temp);      }    } catch (MalformedURLException e) {      // TODO 自动生成的 catch 块      e.printStackTrace();    } catch (IOException e) {      // TODO 自动生成的 catch 块      e.printStackTrace();    }    return sb.toString();  }  public static List<String> GetMatcher(String str,String url){    List<String> result = new ArrayList<String>();    Pattern p =Pattern.compile(url);//获取网页地址    Matcher m =p.matcher(str);    while(m.find()){      //System.out.println(m.group(1));      result.add(m.group(1));    }    return result;  }  public static void main(String args[]){    String str=GetUrl("http://www.163.com");    List<String> ouput =GetMatcher(str,"src=/"([//w//s./:]+?)/"");    for(String temp:ouput){      //System.out.println(ouput.get(0));      System.out.println(temp);    }    String aurl=ouput.get(0);     // 构造URL    URL url;    try {      url = new URL(aurl);       // 打开URL连接      URLConnection con = (URLConnection)url.openConnection();       // 得到URL的输入流      InputStream input = con.getInputStream();      // 设置数据缓冲      byte[] bs = new byte[1024 * 2];      // 读取到的数据长度      int len;      // 输出的文件流保存图片至本地      OutputStream os = new FileOutputStream("a.png");      while ((len = input.read(bs)) != -1) {      os.write(bs, 0, len);      }      os.close();      input.close();    } catch (MalformedURLException e) {      // TODO 自动生成的 catch 块      e.printStackTrace();    } catch (IOException e) {      // TODO 自动生成的 catch 块      e.printStackTrace();    }  }}

运行输出:

更多关于java相关内容感兴趣的读者可查看本站专题:《Java网络编程技巧总结》、《Java Socket编程技巧总结》、《Java文件与目录操作技巧汇总》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表