我要解析的文本用红色箭头显示。这就是我尝试解析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
答案 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