jsoup的maven依赖及jsoup解析html获取Element的数据(demo)

jsoup的maven依赖:
jar包下载地址:http://note.youdao.com/noteshare?id=c2444dc21b286006fb9027683f2a5053


org.jsoup
jsoup
1.7.3

package com.success.project;
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 java.util.Map;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import com.alibaba.druid.support.logging.Log;
import com.alibaba.druid.support.logging.LogFactory;

public class TestJsoupParseHtml {
    private static final  Log log = LogFactory.getLog(Test.class);
    public static void main(String[] args) {
        System.out.println("helloworld");
        String url = "http://hotels.ctrip.com/hotel/beijing1/location94#ctm_ref=hod_hp_sb_lst";
        String encoding ="utf-8";
        String html = getHTMLResourceByUrl(url,encoding);
        System.out.println(html);//输出html
        String fengzhuang = Fengzhuang(html,encoding);
        System.out.println(fengzhuang);
    }
    public static String Fengzhuang(String html,String encoding ){
        Document parse = null; 
        List> list = new ArrayList>();
        //解析html,按照什么编码进行解析html
         parse = Jsoup.parse(html,encoding);
         Element elementById = parse.getElementById("hotel_list");
         Elements elementsByClass = elementById.getElementsByClass("searchresult_list");
         for (Element element : elementsByClass) {
        Map map = new HashMap();
             //获取酒店的图片
            String imgSrc = element.getElementsByTag("img").attr("src");
            //获取酒店title
            String title = element.getElementsByTag("ima").attr("alt");
            //获取酒店的描述信息
          String desc = element.getElementsByClass("searchresult_htladdress").text();
          map.put("imgSrc", imgSrc);
          map.put("title",title);
          map.put("desc",desc);
          list.add(map);
         }
         return list.toString();
    }
    //获取html
    public static String getHTMLResourceByUrl(String url,String encoding){
        StringBuffer sb = new StringBuffer();
        URL urlObj =null;
        URLConnection openConnection =null;
        InputStreamReader isr = null;
        BufferedReader br = null;
        try {
             urlObj = new URL(url);
            openConnection = urlObj.openConnection();
            isr = new InputStreamReader(openConnection.getInputStream(),encoding);
            //建立文件缓冲流
             br = new BufferedReader(isr);
            //建立临时文件
            String temp = null;
            while((temp=br.readLine())!=null){
                sb.append(temp+"\n");
            }
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            log.error("error message", e);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            log.error("error message", e);
        }finally{
            try {
                if(isr !=null){
                    isr.close();
                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                log.error("error message", e);
            }
        }
        return sb.toString();
    }
    
}

测试结果:

[{title=, imgSrc=http://dimg12.c-ctrip.com/images/hotel/128000/127522/43427c590bc342fdb5fb6ca19b6abdf2_R_130_130.jpg, desc=朝阳区酒仙桥北路9号荧屏里4号,近酒仙桥路。 【 望京、酒仙桥、798地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/200u070000002izr2FE01_R_130_130.jpg, desc=朝阳区酒仙桥路13号,近望京SOHO,望京国际商业中心,798艺术区。 【 望京、酒仙桥、798地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/fd/hotel/g5/M08/8C/C1/CggYsFcrF_GAZHusAEAz_YYcL3E922_R_130_130.jpg, desc=朝阳区北苑路200号安苑东里三区10号院6号楼,近安苑路。 【 亚运村、奥体中心地区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/hotel/83000/82458/2eed25257045479499c6aed8ab3c49db_R_130_130.jpg, desc=朝阳区建国门外永安里中街25号2幢,近永安里地铁站。 【 北京站、建国门地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/200r050000000rygh9993_R_130_130.jpg, desc=朝阳区新源西里东街6号楼,近新东路口。 【 东直门、工体、雍和宫地区 燕莎、三里屯商业区】}, {title=, imgSrc=http://dimg12.c-ctrip.com/images/hotel/109000/108346/4b334f9eaebb4530bf30f8cef4f4d1c8_R_130_130.jpg, desc=朝阳区小黄庄北街2号2幢,近地铁5号线和平西桥站。 【 马甸、安贞地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/fd/hotel/g2/M02/E1/50/Cghzf1TPQVmAKfGwABNnbBtlWA8846_R_130_130.jpg, desc=朝阳区酒仙桥彩虹路798北门,近酒仙桥北路。 【 望京、酒仙桥、798地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/hotel/140000/139379/0165E24A503F416A81EC81545F993747_R_130_130.Jpg, desc=朝阳区静安里30号,近中国国际展览中心。 【 国展中心地区】}, {title=, imgSrc=http://dimg11.c-ctrip.com/images/fd/hotel/g1/M07/E2/EB/CghzfVS405uAGRNpAAEsvt174L4590_R_130_130.jpg, desc=朝阳区霄云路霞光里30号院6号楼。 【 燕莎、三里屯商业区】}, {title=, imgSrc=http://dimg12.c-ctrip.com/images/fd/hotel/g5/M04/8C/99/CggYsVcrDxSAPqEEADgEutlyRds555_R_130_130.jpg, desc=朝阳区农光东里34号楼,近劲松桥。 【 劲松、潘家园地区】}, {title=, imgSrc=http://dimg11.c-ctrip.com/images/fd/hotel/g4/M04/8D/74/CggYHFYtiVqAIy4KAAD17Zgk6nk251_R_130_130.jpg, desc=朝阳区广渠路15号金茂府23号院7号楼,近东四环大郊亭桥西北角。 【 国贸地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/fd/hotel/g5/M08/91/28/CggYsVcrHJOAID85ADJRAML-1SM223_R_130_130.jpg, desc=朝阳区望京湖光中街8号,近南湖南路。 【 望京、酒仙桥、798地区】}, {title=, imgSrc=http://dimg11.c-ctrip.com/images/200u050000000s3nk9EE3_R_130_130.jpg, desc=朝阳区西大望南路南口周庄嘉园南里1号楼,临近弘燕路路口。 【 劲松、潘家园地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/fd/hotel/g6/M02/CB/C2/CggYtFcxG4eALX5SAAHd53oTmSU782_R_130_130.jpg, desc=朝阳区新东路8号首开铂郡南区4号楼1门三层170房间,近幸福三村四巷。 【 东直门、工体、雍和宫地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/200b060000001xgcj7010_R_130_130.jpg, desc=朝阳区东直门外大街28号港湾国际16层,近春秀路路口。 【 东直门、工体、雍和宫地区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/fd/hotel/g3/M03/56/47/CggYG1X4j5KAI9oFAAKbsgTNU-k330_R_130_130.jpg, desc=朝阳区东四环红领巾桥东400米,路北50米,近十里堡地铁站。 【 燕莎、三里屯商业区 国贸地区】}, {title=, imgSrc=http://dimg12.c-ctrip.com/images/200o070000002rvo41255_R_130_130.jpg, desc=朝阳区东三环北路8号,近农展馆。 【 燕莎、三里屯商业区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/t1/hotel/86000/85893/eeafbfdd4fcc4df1b617e50a8c544c9e_R_130_130.jpg, desc=朝阳区霄云路26号,近天泽路。 【 燕莎、三里屯商业区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/t1/hotel/1287000/1286149/888f353e11424c9da1360ced3c317a48_R_130_130.jpg, desc=朝阳区建国门南大街2号,近建外大街。 【 北京站、建国门地区 国贸地区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/hotel/375000/374421/3412b6d6ccce488188185fb699bb26e5_R_130_130.jpg, desc=朝阳区亮马桥路48号,近燕莎桥。 【 燕莎、三里屯商业区 东直门、工体、雍和宫地区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/t1/hotel/1199000/1198300/db2629b825574329842aaaa89f28e146_R_130_130.jpg, desc=朝阳区呼家楼京广中心,近京广桥。 【 国贸地区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/hotel/20000/19267/4d01b49ad91245cd97f4c55f4569d680_R_130_130.jpg, desc=朝阳区北四环中路华严北里8号,健翔桥辅路东南侧。 【 亚运村、奥体中心地区】}, {title=, imgSrc=http://dimg10.c-ctrip.com/images/hotel/397000/396423/77d4c05c5f114ab59e8cab81d77a132c_R_130_130.jpg, desc=朝阳区新源南路2号,燕莎友谊商城正对面。 【 燕莎、三里屯商业区 国展中心地区】}, {title=, imgSrc=http://dimg13.c-ctrip.com/images/2009050000000ysv59652_R_130_130.jpg, desc=朝阳区亮马桥路50号,近燕莎友谊商城。 【 燕莎、三里屯商业区】}, {title=, imgSrc=http://dimg12.c-ctrip.com/images/t1/hotel/1000/26/76e4fb4dc72344fcb6024390fe9305a7_R_130_130.jpg, desc=朝阳区北辰东路8号,奥林匹克中心对面。 【 亚运村、奥体中心地区】}, {title=, imgSrc=, desc=}]

你可能感兴趣的:(jsoup的maven依赖及jsoup解析html获取Element的数据(demo))