java爬取网页数据或网页图片入门版

因为是实例所以方法和类的名都随意的一些:

class CheckData {
    // 获取img标签正则
    private static final String IMGURL_REG = "<img.*src=(.*?)[^>]*?>";
    // 获取src路径的正则
    private static final String IMGSRC_REG = "[a-zA-z]+://[^\\s]*";

    public static void getData(String requestUrl) throws IOException {
        HttpURLConnection connection = null;//url连接,和定义请求方式
        InputStream inputStream = null;//输入流
        InputStreamReader inputStreamReader = null;//输入字符流,用于获取到网页的输入流后,将输入流转换成字符流。
        BufferedReader bufferedReader = null;//用于缓存字符流
        StringBuffer buffer = null;//将分割出来的字符流拼接

        //建立get请求
        URL url = new URL(requestUrl);
        connection = (HttpURLConnection) url.openConnection();
        connection.setDoInput(true);
        connection.setRequestMethod("GET");
        //获取输入流
        inputStream = connection.getInputStream();//获取连接中的输入流
        inputStreamReader = new InputStreamReader(inputStream, "utf-8");//将字符流转成utf-8的字符流
        bufferedReader = new BufferedReader(inputStreamReader);//将字符流储存起来
        buffer = new StringBuffer();
        String str = null;
        while ((str = bufferedReader.readLine()) != null) {//获取存储字符流的
            buffer.append(str);
        }

        //todo 以上则为拉取数据的代码,要拉取网页中的图片则需要加上一下代码

        //拉取网页中带有<img>标签的数据并保存
        Matcher matcher = Pattern.compile(IMGURL_REG).matcher(buffer.toString());
        List<String> listimgurl = new ArrayList<String>();
        while (matcher.find()) {
            listimgurl.add(matcher.group());
        }
        List<String> imgs = new ArrayList<>();
        //拉取网页中带有<img>标签的数据并保存
        for (String img : listimgurl) {
            Matcher matcher1 = Pattern.compile(IMGSRC_REG).matcher(img);
            while (matcher1.find()) {
                imgs.add(matcher1.group());
            }
        }
        System.out.println(imgs);
    }

调用实例:

String data = null;
try {
    String ser="https://fabiaoqing.com/biaoqing";
    CheckData.getData(ser);
} catch (IOException e) {
    System.out.println("出错");
}

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值