Java拉取网页资源

2021-03-03 13:10:01 浏览数 (1)

package com.zp.util;

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.ArrayList; import java.util.HashMap; import java.util.List;

import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;

/**  * 大数据批量数据检索工具类  * @author 盲鹰  * @version 1.0  */ public class DataDownUtil {

    /**      * 根据网址和网页的编码集,获取网页源代码      * @author 盲鹰      * @param url    网址      * @param encoding    网页编码集      * @return          */     public static String getHTMLResourceByUrl(String url, String encoding) {         StringBuffer buffer = new StringBuffer();         URL urlObj = null;         URLConnection uc = null;         InputStreamReader isr = null;         BufferedReader reader = null;         try {             // 建立网络连接             urlObj = new URL(url);             // 打开网络连接             uc = urlObj.openConnection();             // 建立文件写入流             isr = new InputStreamReader(uc.getInputStream(), encoding);             // 建立文件缓冲写入流             reader = new BufferedReader(isr);             String temp = null;             while((temp = reader.readLine()) != null) {                 //边读边写                 buffer.append(temp "n");             }                 return buffer.toString();         } catch (MalformedURLException e) {             e.printStackTrace();             System.out.println("世界上最遥远的距离就是没有网,请检查设置。");         } catch (IOException e) {             e.printStackTrace();             System.out.println("您打开的网络连接失败!请您稍后。");         } finally {             if (isr != null) {                 try {                     isr.close();                 } catch (IOException e) {                     e.printStackTrace();                 }             }         }         return null;     }     /**      * 解析网页源代码,获取对应的自定义采集内容      * @author 盲鹰      * @param url    网址      * @param encoding    网页编码集      * @return    List集合      */     public static List<HashMap<String, String>> getHotelInfo(String url, String encoding) {         // 根据网址和网页的编码集,获取网页源代码         String html = getHTMLResourceByUrl(url, encoding);         // 解析网页源代码,获取对应的自定义采集内容         Document document = Jsoup.parse(html);         // 获取最外层的 div id="hotel_list"         Element element = document.getElementById("listZone");         // 获取酒店结果列表searchresut_list         Elements elements = document.getElementsByClass("Q-tpListInner");         // 解析网页源代码层次结构         List<HashMap<String, String>> maps = new ArrayList<HashMap<String, String>>();         for (Element el : elements) {             HashMap<String, String> map = new HashMap<String, String>();             // 获取酒店图片             String imgSrc = el.getElementsByTag("img").attr("src");             // 获取酒店title             String title = el.getElementsByTag("img").attr("alt");             // 获取酒店的描述             String content = el.getElementsByTag("p").text();             map.put("imgSrc", imgSrc);             map.put("title", title);             map.put("content", content);             //存储到List集合中用于前台遍历             maps.add(map);         }         return maps;             }     public static void main(String[] args) {

        String url = "http://tech.qq.com/";         String encoding = "gbk";         List<HashMap<String, String>> maps = getHotelInfo(url, encoding);         if (maps != null && maps.size() > 0) {             for (HashMap<String, String> map : maps) {                 System.out.println("title:" map.get("title"));                 System.out.println("图片:" map.get("imgSrc"));                 System.out.println("描述:" map.get("content"));             }         }         // 返回到页面显示

    } }

0 人点赞