我有如下所示的 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>
您没有在 HTML 中找到该内容的原因是,时间表是由执行 Javascript 的浏览器从 JSON 文件加载的,然后将其添加到浏览器 DOM。Jsoup 不执行 Javascript,因此它只能查看源 HTML 中的内容。
如果您使用像 Charles 这样的调试代理(或 Chrome / Firefox 中的调试网络窗格),您可以看到浏览器为呈现页面而发出的所有请求。在此示例中,计划数据来自http://mlb.mlb.com/gen/schedule/phi/2011_4.json
假设您的标签如下所示:
<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();