有一个网页我一直在尝试访问数据,但在页面加载我需要访问的div是空的,并在1秒后更新后更新。当我用java阅读网页时,它永远不会达到这一点。我总是认为它是空的(实际上它是一个被覆盖的占位符文本,所以我知道我在正确的位置)
有没有办法在我拿到之前等待它加载?或者,我怎样才能找出写入页面的数据来自何处?
当前代码:
public class AlchemyCalculator {
final int Max = 13192;
final int Min = 2;
public static void main(String[] args){
try {
Document doc = Jsoup.connect("https://rsbuddy.com/exchange/?id=2").get();
String textContents = doc.select("#buy-price").outerHtml();
//was just ensuring I was at the right place by using outerHtml
System.out.println(textContents);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
我只是从小开始尝试让它工作一次然后我计划扩展它。
答案 0 :(得分:0)
JSoup只是一个解析器。它还可以使用connect()方法直接从Internet解析文档,但它不是浏览器。因此,如果您的网站稍后通过AJAX加载更多资源,Jsoup无法直接处理它。
我看到了选择:
使用selenium,这是一个真正的浏览器,因此会创建您需要的AJAX调用
通过调查实际调用的URL来识别AJAX调用。也许你可以用JSoup手动调用这些请求。
我看了一下网站。您可能很幸运,可以从
中检索所有信息https://rsbuddy.com/exchange/summary.json
要解释这一点,你应该使用JSON解析器,而不是Jsoup。