调用getElementById时获取NULL

时间:2012-11-25 19:53:53

标签: java jsoup

我有下面显示的HTML(部分)。我想使用:

找到元素
org.jsoup.nodes.Element elem = doc.getElementById("date-2011-04-23");

但我总是得到NULL。谁能帮我?作为检查,我也使用VB.NET对此进行编码,我可以访问此元素。

<td class="" id="date-2011-04-23" data-week="3" data-wkday="6">...</td>

2 个答案:

答案 0 :(得分:0)

假设您的代码如下:

<td class="" id="date-2011-04-23" data-week="3" data-wkday="6">...</td>

您可以使用JSoup Selector API

for( Element element : doc.select("#date-2011-04-23") )
{
    // Do something here
}

如果您只需要第一个元素:

Element element = doc.select("#date-2011-04-23").first();

答案 1 :(得分:0)

您在HTML中未找到该内容的原因是,浏览器执行Javascript时会从JSON文件加载计划,然后将其添加到浏览器DOM。 Jsoup不执行Javascript,所以它只能看到源HTML中的内容。

如果您使用像Charles这样的调试代理(或Chrome / Firefox中的调试网络窗格),您可以看到浏览器渲染页面的所有请求。在此示例中,计划数据来自http://mlb.mlb.com/gen/schedule/phi/2011_4.json