前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jsoup的maven依赖及jsoup解析html获取Element的数据(demo)

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

作者头像
挑战者
发布2018-06-29 17:29:18
4.7K0
发布2018-06-29 17:29:18
举报
文章被收录于专栏:java沉淀

jsoup的maven依赖: jar包下载地址:http://note.youdao.com/noteshare?id=c2444dc21b286006fb9027683f2a5053 <dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.3</version> </dependency>

代码语言:javascript
复制
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<Map<String,String>> list = new ArrayList<Map<String,String>>();
        //解析html,按照什么编码进行解析html
         parse = Jsoup.parse(html,encoding);
         Element elementById = parse.getElementById("hotel_list");
         Elements elementsByClass = elementById.getElementsByClass("searchresult_list");
         for (Element element : elementsByClass) {
        Map<String,String> map = new HashMap<String,String>();
             //获取酒店的图片
            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=}]
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.11.15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 测试结果:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档