zoukankan      html  css  js  c++  java
  • httpClient get方式抓取数据

    /*
         * 爬取网页信息
         */
        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) {
                        InputStream in = entity.getContent();
                        // byte[] b=new byte[in.available()];
                        // in.read(b);
                        BufferedReader br = new BufferedReader(new InputStreamReader(in, "gbk"));
                        String temp = "";
                        String s = "";
                        while ((temp = br.readLine()) != null) {
                            s = s + temp;
                        }
                        return s;
                    } else {
                        String content = "热门综艺节目抓取失败,请检查";
                        ErrorLog el = new ErrorLog();
                        Remind remind = new Remind();
                        remind.remind(el.getVerietyLog(), content);
                        return null;
                    }
                } 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 Variety analyzeHTMLByString(String html) {
            Variety v = new Variety();
            String[] arr = new String[3];
            Document document = Jsoup.parse(html);
            // document.select("meta").attr("charset", "utf-8");
            // System.out.println(document);
            Elements array = document.getElementsByClass("keyword");
            System.out.println(array.size());
            String content = "热门综艺节目抓取失败,请检查";
            ErrorLog el = new ErrorLog();
            if (array.size() == 0) {
                Remind remind = new Remind();
                remind.remind(el.getVerietyLog(), content);
                return null;
            }else{
                if (array.size() >= 3) {
                    for (int i = 0; i < 3; i++) {
                        String name = array.get(i).child(0).text();
                        arr[i] = name;
                    }
                } else {
                    for (int i = 0; i < array.size(); i++) {
                        String name = array.get(i).child(0).text();
                        arr[i] = name;
                    }
                }
                v.setHot1(arr[0]);
                v.setHot2(arr[1]);
                v.setHot3(arr[2]);
                return v;
            }
            
        }

  • 相关阅读:
    ReentrantLock的实现原理及AQS和CAS
    lock、tryLock和lockInterruptibly的差別
    Sleep和Wait的区别
    什么场景使用多线程
    多生产者多消费者,生产一个数据,消费一个数据
    线程间通讯
    如何退出线程
    线程的状态
    判断二叉树是不是完全二叉树
    js2048小游戏
  • 原文地址:https://www.cnblogs.com/lixiuming521125/p/7058577.html
Copyright © 2011-2022 走看看