Java 无法从jsoup中的div span元素获取文本

Java 无法从jsoup中的div span元素获取文本,java,web-scraping,jsoup,Java,Web Scraping,Jsoup,所以,我在网上抓取课程的所有细节,这些细节是通过链接免费出售的,在那里我可以得到价格(免费或不免费),如果是免费的话,那么课程名称,剩余时间,课程评分等等 这一切都很好,但当它试图获得课程的价格时,它突然给了我空点异常 内容如下 <div class="price-text--price-part--Tu6MH udlite-clp-discount-price udlite-heading-xxl" data-purpose="course-price-te

所以,我在网上抓取课程的所有细节,这些细节是通过链接免费出售的,在那里我可以得到价格(免费或不免费),如果是免费的话,那么课程名称,剩余时间,课程评分等等

这一切都很好,但当它试图获得课程的价格时,它突然给了我空点异常

内容如下

<div class="price-text--price-part--Tu6MH udlite-clp-discount-price udlite-heading-xxl" data-purpose="course-price-text">
 <span class="udlite-sr-only">Current price</span>
  <span>Free</span>
</div>
但是,现在我不能,我做了很多研发,但仍然不能做到。有人能帮我吗


我想要的是获得免费的值。

下面是一个示例代码,应该可以帮助您。我已经使用了Jsoup.parse,但是您可以使用Jsoup.connect并使用代码

字符串price=doc.select(“div.price-text--price-part--Tu6MH”).select(“span:n最后一个子项(1)”.text()

字符串价格=单据选择(“div.price-text-price-part-Tu6MH> span:n最后一个孩子(1)”).text()

String html=“\r\n”+
“当前价格\r\n”+
“免费\r\n”+
"";
Document doc=Jsoup.parse(html);
字符串price=doc.select(“div.price-text--price-part--Tu6MH>span:n最后一个子项(1)”).text();
系统输出打印项次(价格);
如果(!price.contains(“Free”)){
System.out.println(“\n过期后…”);
}否则{
System.out.println(“其免费”);
}

我尝试了您的第一个解决方案,但没有成功,第二个解决方案即将推出,因此链接将始终处于更改状态。例如,现在链接是,但下一次它将是不同的,我必须检查课程是免费的还是免费的not@Akash您可以使用Jsoup.connect连接所需的任何url。如果每个页面中的html结构相同,如示例中所示。你可以在上面做。但是,如果你正在阅读哪个url,如果它包含html,如果读取该url是合法的,那么这些都是你必须注意的。忘记一切,你能帮我从这个链接获取带有java代码的“免费”文本吗?@Akash Lt me给你提些建议。无论您试图访问哪个url,用java阅读该页面的html,看看页面中是否有html,现在页面中的很多内容都是通过javascript或ajax实现的,您的jsoup调用不会实现这些。为此,您必须使用类似于selenium的东西。我尝试过但没有起作用,最让我惊讶的是,它以前工作得非常好(从过去1-2个月开始使用),但突然它开始给我带来NullPointerException有关堆栈溢出(所有堆栈交换网络)的问题必须是自包含的。堆栈溢出的主要目的是让问题对将来的访问者有用。需要用户到异地获取更多信息的问题对于未来的访问者来说是没有用的,特别是在异地资源发生变化时。这个问题可能很好/有用,但您需要在问题中加入足够的代码,这样我们就可以知道您在问什么,而无需离开现场去了解。请参阅:,其中有更多信息。
Document document = Jsoup.connect(mainUrl).userAgent("Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36").get();
String price = document.select("div.price-text--price-part--Tu6MH").first().text();

            if (!price.contains("Free")) {
                System.out.println("\nCoupon Expired...");
            } else {
                further code...
            }
String html = "<html><body><div class=\"price-text--price-part--Tu6MH udlite-clp-discount-price udlite-heading-xxl\" data-purpose=\"course-price-text\">\r\n" + 
                      " <span class=\"udlite-sr-only\">Current price</span>\r\n" + 
                      "  <span>Free</span>\r\n" + 
                      "</div></body></html>";
  Document doc = Jsoup.parse(html);
  String price = doc.select("div.price-text--price-part--Tu6MH > span:nth-last-child(1)").text();
  System.out.println(price);
  if (!price.contains("Free")) {
      System.out.println("\nCoupon Expired...");
  } else {
      System.out.println("Its free");
  }