我正在尝试获取范围
中的文字使用以下代码。但是,输出的行为就好像嵌套的跨度不存在一样
Elements tags = document.select("div[id=tags]");
for (Element tag:tags){
Elements child_tags = tag.getElementsByTag("class");
String key = tag.html();
System.out.println(key); //only as a test
for (Element child_tag:child_tags){
System.out.println("\t" + child_tag.text());
}
我的输出是
<hr />Tags:
<span id="category"></span>
<span id="voteSelector" class="initially_hidden"> <br /> </span>
答案 0 :(得分:1)
Elements child_tags = tag.getElementsByTag("class");
使用此行,您将尝试获取具有标记类的元素,即<class>...</class>
,该元素不存在。将该行更改为:
Elements child_tags = tag.getElementsByClass("tag");
通过class = tag的属性值获取元素或者:
Elements child_tags = tag.getElementsByTag("span");
按标签名称= span。
获取元素答案 1 :(得分:1)
假设您正在https://chesstempo.com/chess-problems/15上尝试代码,并且您想要的数据显示在下面的图片中
现在,使用Jsoup,您将获得在浏览器中呈现为源代码的数据,以确认您可以在浏览器中按Uncaught Error: The edge events feature is not compatible with the WebGL renderer
,这将打开一个新窗口,其中Jsoup将获得实际内容将显示。现在回答您的问题,您尝试检索的部分不会出现在浏览器源代码中,请按CTRL+U
进行检查。
如果使用JAVASCRIPT呈现内容,则JSOUP将无法看到这些内容,因此您必须使用其他可运行javascript的内容并为您提供详细信息。
JSoup不运行Javascript,也不是浏览器。
修改强>
使用 SELENIUM 有一个好转。下面是工作代码,用于获取网址的确切源代码以及您要查找的所需数据:
CTRL+U
您需要能够模拟浏览器行为的selenium web driver Selenium Web Driver,并允许您呈现脚本编写的html内容。