如何在这个HTML代码中解析div?

时间:2017-09-03 11:09:31

标签: android html jsoup

我有以下html html代码: enter image description here

我要解析的文本用红色箭头显示。这就是我尝试解析h2

的方式
Elements elements = document.select("div#app div#timetable-content-holder h2");

但不幸的是elements的大小为零。

但我检查document.select(div#app).size()是1,但是document.select(div#app div#timetable-content-holder).size()是0.如果它为零,则意味着我无法for循环元素而永远无法实现其他文本显示在图片上,因为它们在div内。我想问题是timetable-content-holder有一些data-reactroot。我不知道为什么会这样。 我通过URL引用该页面。 如何解决这个问题呢?为什么elements的大小始终为零?

需要的人的HTML代码(需要解析标记的文本)

    <div id="app">

<div data-reactroot="" id="timetable-content-holder">

<div> </div> 

<div> </div> 

<div> </div> 

<div> </div> 

//a lot of div above(closed) 

<h2>I need it1</h2> ( how to get this) 



<div class="timetable-holder gr-holder">

<div class="timetable-day gr">

<div class="timetable-day-title">I need it2</div>

<div class="timetable-card" data-day="1" data-time="1">

<div class="timetable-time">

08:00<!-- /react-text --> // I need it3

<!-- react-text: 57 --> <!-- /react-text --><!-- react-text: 58 -->

08:50<!-- /react-text --></div><span class="font-icon down-arrow"></span><div class="timetable-subject" title="title">I need it4</div>

//below is also closing divs  

1 个答案:

答案 0 :(得分:1)

你可以编写以下代码来获得结果。 首先创建id timetable-content-holder的元素并使用get(0)(否则它将返回元素列表),这样文档将只返回id的第一个元素。那么你可以直接从该元素中选择h2,你将获得第一个答案 ele1:您要解析的第一个文本等等

Element ele1 = document.select("div[id=timetable-content-holder]").get(0);
ele1 = ele1.select("h2").get(0);
Element ele2 = document.select("div[class=timetable-day-title]").get(0);
Element ele3 = document.select("div[class=timetable-time]").get(0);
Element ele4 = document.select("div[title=Subject]").get(0);

上述代码的结果是:

IT NEED TO BE PARSED
THIS IS ALSO
"08:00"
Subject