zoukankan      html  css  js  c++  java
  • jsoup入门

    jsoup是一款Java的HTML解析器,主要用来对HTML解析。官网   中文文档

    可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。

    jSOUP主要功能

    1. 从一个URL,文件或字符串中解析HTML;
    2. 使用DOM或CSS选择器来查找、取出数据;
    3. 可操作HTML元素、属性、文本

    例子:下载一个网站上的图片

    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import org.jsoup.Jsoup;
    import org.jsoup.nodes.Document;
    import org.jsoup.nodes.Element;
    import org.jsoup.select.Elements;
    
    /**
     * 利用Java实现搜索引擎爬虫技术
     * 
     * @version v1.0
     */
    public class Test {
    
        /**
         * 根据图片的url地址,下载图片到服务器
         * 
         * @param filepath
         *            文件存放路径
         * @param imageUrl
         *            图片url
         * @return void
         */
        public static void downImage(String filepath, String imageUrl) {
            String fileName = imageUrl.substring(imageUrl.lastIndexOf("/"));
            // 创建一个文件目录
            try {
                File files = new File(filepath);
                if (!files.exists()) {
                    files.mkdirs();
                }
                // 获取下载链接
                URL url = new URL(imageUrl);
                // 连接网络地址
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                // 获取连接的输出流
                InputStream is = connection.getInputStream();
                // 创建文件
                File file = new File(filepath + fileName);
                // 建立输入流,写入文件
                FileOutputStream fos = new FileOutputStream(file);
                int temp = 0;
                while ((temp = is.read()) != -1) {
                    fos.write(temp);
                }
                is.close();
                fos.close();
            }
            catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        // Java入口
        public static void main(String[] args) {
    
            // 解析源代码
            Document document = null;
            try {
                document = Jsoup.connect("http://news.163.com/18/0306/13/DC7GIBMB000187VE.html").get();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            // 获取所有图片的地址<img src="" alt="" width="" height=""/>
            Elements elements = document.getElementsByTag("img");
            for (Element element : elements) {
                String imgSrc = element.attr("src");
                System.out.println("网络图片的地址:" + imgSrc);
                if (!"".equals(imgSrc) && imgSrc.startsWith("http://")) {
                    System.out.println("正在批量下载图片..." + imgSrc);
                    downImage("C:\Users\shay_deng\Desktop\下载图片测试", imgSrc);
                }
            }
        }
    }
  • 相关阅读:
    剑指offer--2.替换空格
    剑指offer--1.二维数组中的查找
    poj-1426-Find The Multiple(打表水过)
    hdoj-3791-二叉搜索树(二叉搜索树模板题)
    hdoj-1276-士兵队列训练问题(队列模拟)
    HihoCoder
    CodeForces-831A-Unimodal Array (水题)
    hdoj-1046-Gridland(规律题)
    hdoj-1038-Biker's Trip Odometer(水题)
    hdoj-1037-Keep on Truckin'(水题)
  • 原文地址:https://www.cnblogs.com/RealWorld/p/8522124.html
Copyright © 2011-2022 走看看