java - 如何使用Jsoup正确提取所需的信息?

标签 java jsoup

最近,我决定尝试一下 Jsoup 及其各种属性。为了做到这一点,我创建了一个小应用程序,它从以下网站收集信息( http://sunwell.pl )。

现在(如果您查看网站)我想获取有关在线玩家的信息。

HTML 代码

<span class="zalogowany-jako-username" style="font-size: 20px;">Players online: 791</span>

我的代码

public void read(String webAddress) throws IOException {

        document = Jsoup
                .connect(webAddress)
                .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
                .get();
        elements = document.select("span[class=zalogowany-jako-username]");
        System.out.println(elements);
    }

结果

执行程序后,它根本不打印任何内容(幸运的是也没有错误)。我的问题是为什么?有人可以纠正我吗?

最佳答案

这是因为 Jsoup 支持 JavaScript。您尝试获取的 html 代码是由 JavaScript 生成的,因此它在浏览器上可见,但对于 Jsoup 不可用,因为Jsoup 无法呈现 JavaScript,只能检索纯 HTML 代码。

查看Jsoup是否可以检索内容的一个好方法是使用Document doc = Jsoup.connect(url).get()获取整个网页,然后执行 System.out.println(doc.html()) 来查看检索到的内容。我已经用您的网址完成了此操作,发现您想要的标签不存在。

<小时/>

更新:

您可以做的一件事是使用 Chrome 浏览器的开发者工具,打开网络选项卡,选择 XHR 作为过滤器,然后刷新页面即可查看网站从哪里获取 AJAX 信息。

我对您的网站执行了此操作,发现该网站从以下网址检索信息:“ http://sunwell.pl/getstatuscode.php ”。因此,请尝试使用此网址,而不是您的原始网址。这将为您提供所需的信息!

enter image description here enter image description here

关于java - 如何使用Jsoup正确提取所需的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33703670/

相关文章:

java - 我如何告诉 Spring Boot 忽略 Jetty 并始终使用 Tomcat?

java - 如何使用接口(interface)使用 Kryo 序列化/反序列化对象

java - 将 JPanel 转换为 png 或其他图像文件

java - Android 使用 JSOUP 处理 HTML

android - 在 Play 商店获取当前应用版本

java - 如何在 Tomcat 中为 Java EE 应用程序实现套接字

java - 邻接矩阵的实现

java - JSOUP 计数 Map 标签中的总元素数

java - 如何使用Jsoup获取包含某个img的Element数?

java - 为什么 JSoup 中可能缺少某些方法?