Java获取网页中的图片

import java.io.BufferedOutputStream;
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.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 getImageByUrl4 {
    /**
     * @param args
     */
    private List<String> imageUrl = new ArrayList<String>();//用于存储图片的url
    private int count = 0;//图片计数器
    public static void main(String[] args) {
        String netUrl = "http://www.xxxxxx.com";//要爬的网页
        new getImageByUrl4().init(netUrl);
    }
    public void init(String netUrl){
        getPage(netUrl);
        while(imageUrl.size()!=0)
        {
            getImage(imageUrl.remove(0));
        }
    }
    //获取网页信息line中的图片url并加入到集合中
    public void getImageUrl(String line,String netUrl){
        //三种正则表达式
        //其他网站的图片,http开头如:src = "http://www.ecoc.com:8080/pic/jfjiejf.jpg
        //String searchImgReg = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)=('|\")(http://([\\w-]+\\.)+[\\w-]+(:[0-9]+)*(/+[\\w-]+)*(/+[\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))";
        String searchImgReg = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)\\w{0,2}=('|\")http(s)*://.{1,}.(jpg|JPG|png|PNG|gif|GIF)\"\\s";
        //项目中的图片,绝对路径如:src = "/ecoc/lala/jj/ooellaie.jpg
        //String searchImgReg2 = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)\\w{0,2}=('|\")/*(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))('\")";
        String searchImgReg2 = "(src|SRC|background|BACKGROUND|background-image|BACKGROUND-IMAGE)\\w{0,2}=('|\")/*(([\\w-]+/)*([\\w-]+\\.(jpg|JPG|png|PNG|gif|GIF)))\"\\s";
        try {
            Pattern pat = Pattern.compile(searchImgReg);
            Matcher matcher=pat.matcher(line);
            String str =null;
            while(matcher.find())
            {
                str = matcher.group();
                String []sttr = str.split(" ");System.out.println(str);
                for(int i = 0;i<sttr.length;i++){
                    String s = sttr[i];
                    Integer index_denghao = s.indexOf("=")+2;
                    imageUrl.add(s.substring(index_denghao,s.length()-1));
                }
            }
            pat = Pattern.compile(searchImgReg2);
            matcher=pat.matcher(line);
            while(matcher.find())
            {
                str = matcher.group(); System.out.println(str);
                String []sttr = str.split(" ");
                for(int i = 0;i<sttr.length;i++){
                    String s = sttr[i];System.out.println(s);
                    Integer index_denghao = s.indexOf("=")+2;
                    Integer index_2 = netUrl.indexOf("/", 8);
                    if(index_2==-1)
                        index_2 = netUrl.length();
                    imageUrl.add(netUrl.substring(0, index_2)+"/"+s.substring(index_denghao,s.length()-1));
                }
            }
        } catch (Exception e) {
             
        }
    }
    //爬取网页中的信息。
    public void getPage(String netUrl){
        BufferedReader mybr = null;
        try {
            URL myurl = new URL(netUrl);
            URLConnection myconn = myurl.openConnection();
            InputStream myin = myconn.getInputStream();
            mybr = new BufferedReader(new InputStreamReader(myin,"UTF-8"));
            String line;
            while((line = mybr.readLine())!= null)
            {
                getImageUrl(line,netUrl);//判断网页中的jpg图片
            }
 
        } catch (MalformedURLException e) {
            System.out.println("getPage url异常");
        } catch (IOException e) {
            System.out.println("url连接异常");
            e.printStackTrace();
        }finally {
            if( mybr != null)
            {
                try {
                    mybr.close();
                } catch (IOException e) {
                    System.out.println("读入流关闭异常");
                }
            }
        }
    }
    //下载该图片!
    public void getImage(String imageUrl){
        InputStream myin = null;
        BufferedOutputStream myos = null;
        try {
            File file = new File("H:\\pic\\");
            File[] files = file.listFiles();
            for (File file2 : files) {
                Integer fileName = Integer.valueOf(file2.getName().substring(0, file2.getName().indexOf(".")));
                if(count<fileName){
                    count = fileName;
                }
            }
            URL myurl = new URL(imageUrl);
            URLConnection myconn = myurl.openConnection();
            myin = myconn.getInputStream();
            myos = new BufferedOutputStream(new FileOutputStream("H:\\pic\\"+(++count)+".jpg"));
            byte[] buff = new byte[1024];
            int num = 0;
            while((num = myin.read(buff))!= -1)
            {
                myos.write(buff, 0, num);
                myos.flush();
            }
        } catch (MalformedURLException e) {
            System.out.println("getImage url异常");
            e.printStackTrace();
        } catch (IOException e) {
            System.out.println("下载图片url连接异常");
            e.printStackTrace();
        }
        finally{
            if( myin != null){
                try {
                    myin.close();
                } catch (IOException e) {
                    System.out.println("读入流关闭异常");
                }
            }
            if( myos != null){
                try {
                    myos.close();
                } catch (IOException e) {
                    System.out.println("输出流关闭异常");
                }
            }
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
1. 爬取网页标题 使用Jsoup.connect()连接到目标网页并使用get()方法获取网页内容。然后使用select()方法选取网页的标题元素。 ``` Document doc = Jsoup.connect("http://www.example.com/").get(); String title = doc.select("title").text(); System.out.println(title); ``` 2. 爬取网页的所有链接 使用Jsoup.connect()连接到目标网页并使用get()方法获取网页内容。然后使用select()方法选取网页的所有链接元素,并遍历每个元素提取链接地址。 ``` Document doc = Jsoup.connect("http://www.example.com/").get(); Elements links = doc.select("a[href]"); for (Element link : links) { String linkUrl = link.attr("href"); System.out.println(linkUrl); } ``` 3. 爬取网页图片链接 使用Jsoup.connect()连接到目标网页并使用get()方法获取网页内容。然后使用select()方法选取网页的所有图片元素,并遍历每个元素提取图片地址。 ``` Document doc = Jsoup.connect("http://www.example.com/").get(); Elements images = doc.select("img[src]"); for (Element image : images) { String imageUrl = image.attr("src"); System.out.println(imageUrl); } ``` 4. 爬取网页的表格数据 使用Jsoup.connect()连接到目标网页并使用get()方法获取网页内容。然后使用select()方法选取网页的所有表格元素,并遍历每个元素提取表格数据。 ``` Document doc = Jsoup.connect("http://www.example.com/").get(); Elements tables = doc.select("table"); for (Element table : tables) { Elements rows = table.select("tr"); for (Element row : rows) { Elements cells = row.select("td"); for (Element cell : cells) { String cellText = cell.text(); System.out.println(cellText); } } } ``` 5. 爬取网页的表单数据 使用Jsoup.connect()连接到目标网页并使用get()方法获取网页内容。然后使用select()方法选取网页的所有表单元素,并遍历每个元素提取表单数据。 ``` Document doc = Jsoup.connect("http://www.example.com/").get(); Elements forms = doc.select("form"); for (Element form : forms) { String actionUrl = form.attr("action"); String method = form.attr("method"); System.out.println("Action URL: " + actionUrl); System.out.println("Method: " + method); Elements inputs = form.select("input"); for (Element input : inputs) { String name = input.attr("name"); String value = input.attr("value"); System.out.println(name + ": " + value); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

今晚哒老虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值