欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

使用java jsoup抓取页面中的数据

程序员文章站 2022-05-17 10:37:04
...

介绍

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

业务需求

抓取页面中的答案。如图:
使用java jsoup抓取页面中的数据

demo展示

 //方法入口
 public static void main(String[] args) {
       for (int i = 1974; i <= 2700; i++) {
            //获取url
            String url = "https://game-solver.com/word-connect-answers/word-connect-level-" + i + "-answers/";
            //爬取网页信息
            String html = pickData(url);
            //获取html中的内容
            String content = analyzeHTMLByString(html,i);
            //输出获取到的内容
            System.out.println(content);
        }

    }

    /*
     * 爬取网页信息
     */
    private static String pickData(String url) {
        CloseableHttpClient httpclient = HttpClients.createDefault();
        try {
            HttpGet httpget = new HttpGet(url);
            CloseableHttpResponse response = httpclient.execute(httpget);
            try {
                // 获取响应实体
                HttpEntity entity = response.getEntity();
                // 打印响应状态
                if (entity != null) {
                    return EntityUtils.toString(entity);
                }
            } finally {
                response.close();
            }
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接,释放资源
            try {
                httpclient.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

 /*
     * 使用jsoup解析网页信息
     */
    private static String analyzeHTMLByString(String html int guan) {
        Document document = Jsoup.parse(html);
        //获取html class 为info-box succes 的节点
        org.jsoup.select.Elements eLunarDate = document.getElementsByClass("info-box success");
        //截取掉标签,只获取内容
        String str = eLunarDate.toString().substring(32, eLunarDate.toString().length() - 7);
       return str ;
    }
相关标签: 抓取页面数据