我正在尝试访问某个页面并从此页面获取值。
首先我无法访问此页面,因此我无法对代码进行任何修改,这就是问题,因为它看起来没有正确编码。
请查找页面(来源)的示例(index.html)
我使用ajax get方法访问此页面。
<div id="box" style="background-color:#000000; margin:0px;">
<b>
<big>
<span style="color:#00BB77;">Tue, 02-08-2016</span>
</big>
</b>
</div>
MobApp iOS.A in C04
<br>
09:00 am-11:00 am
<br>
<b>
<big></big>
</b>
<br>
MobApp Andr .A in C12
<br>
01:30 pm-03:30 pm
<br>
<b>
<big></big>
</b>
<br>
<div id="box" style="background-color:#000000; margin:0px;">
<b>
<big>
<span style="color:#00BB77;">Wed, 03-08-2016</span>
</big>
</b>
</div>
Adv. Studio 1.A in C11
<br>
01:30 pm-03:30 pm
<br>
<b>
<big></big>
</b>
<br>
<div id="box" style="background-color:#000000; margin:0px;">
.....etc....
我已经编写了一个代码示例,用于获取范围内的值(日期):
$.ajax({
url: 'http://www.thewebsite.com/index.html',
type: 'GET',
success: function(res) {
var data = $.parseHTML(res);
$(data).find('#box').each(function() {
alert($(this).find('span').html());
});
}
});
它有效我得到: 2016年8月2日星期二 2016年8月3日星期三等...
我想现在得到</div>
和<br>
(主题)和(时间)之后的内容
正如您所看到的,有时每天只能有一个科目或更多。
我知道如果所有内容都在适当的div元素内部会更容易,但是他们很久以前就编写了他们的网站并且他们不会改变它...
我尝试使用next()或nextSibling.nodeValue()获取一些值,但没有成功。
所以提前感谢提示或解决方案。
干杯
答案 0 :(得分:1)
您可以通过以下方式使用javascript子节点:
var children= (document.getElementById("box")).childNodes;
var i=-1,length=children.length;
while(++i < length){
//chidrent text node will also come
console.log(children[i]);
}
答案 1 :(得分:1)
$(data).find(&#39;#box&#39;)将仅返回带ID框的第一个元素,因为ID选择器是唯一的。因此,如果您想要使用ID框访问所有元素,请使用类选择器。
例如:使用class =&#34; box&#34;
<div class="box" style="background-color:#000000; margin:0px;">
然后
$.ajax({
url: 'http://www.thewebsite.com/index.html',
type: 'GET',
success: function(res) {
var data = $.parseHTML(res);
$(data).find('.box').each(function() {
var children = this.childNodes,
i = -1,
length = children.length;
while (++i < length) {
console.log(children[i]); // This will give you each child nodes of div with class box. You can extract the HTML contents of these child nodes here.
}
});