栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

解析HTML页面

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

解析HTML页面

通过解析HTML页面来获取页面的资源:

1、使用正则表达式来获取到我们需要的标签以及标签里的内容,存入到一个容器里,此处我选择的是使用list集合。
2、遍历list集合【我选择的是使用迭代器遍历【注意的是使用迭代器时,一对{}里只能出现一次next()方法,否则会报错,显示找不到这个类的异常,这是因为两个next(),Java程序不知道要去找哪一个next。】】用一个String字符串来存放,接着再对其进行切割,得到我们要创建的目录的文件名。
3、下载资源

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.ListIterator;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class regexHtml {
    public static void readhtml(String fileName, String fileurl) throws IOException {
        File f = new File(fileName);
        BufferedReader in = new BufferedReader(new FileReader(f));
        String str = "";
        String pattern = "<(link.*?|img.*?|script.*?)(src|href)="(.*?)"";
        Pattern p = Pattern.compile(pattern);

        List urlList = new ArrayList<>();
        while ((str = in.readLine()) != null) {
            Matcher regx = p.matcher(str);
            while (regx.find()) {
                urlList.add(regx.group(3));
            }
        }
        //获取迭代器对象
        ListIterator it2 = urlList.listIterator();

        //循环迭代集合中的所有元素
        while (it2.hasNext()) {
            //获取到多级文件目录的名字
            String Durl = it2.next();
            System.out.println("解析出来的文件路径:" + Durl);

            //创建多级目录文件夹,path创建的目标路径
            String path = fileurl + Durl;

            File file = new File(path);
            //如果路径不存在,新建
            if (!file.exists() && !file.isDirectory()) {
                file.mkdirs();
            }

            //获取到数组的最后一个元素作为文件名
            String[] split = Durl.split("/");
            System.out.println("下载" + split[split.length - 1] + "资源");
            String fileName2 = split[split.length - 1];
          
            String downloadUrl = "目标地址" + Durl;  //如:www.baidu.com
            String savePath = fileurl + Durl + "\";
            downloadFile(fileName2, downloadUrl, savePath);

        }
    }

    //下载资源
    public static boolean downloadFile(String fileName, String downloadUrl, String savePath) {
        boolean result = false;
        try {

            //先判断文件是否存在
            File file1 = new File(savePath + fileName);
            if (file1.exists()) {
                System.out.println("删除已存在的文件");
                file1.delete();
            }
            long begin = System.currentTimeMillis();
            URL url = new URL(downloadUrl);
            File file = new File(savePath + fileName);
            org.apache.commons.io.FileUtils.copyURLToFile(url, file);
            long end = System.currentTimeMillis();
            //System.out.println("文件下载耗时:" + (end - begin) / 1000 + "s");
            //执行到此,说明文件下载完毕
            result = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/459982.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号