java - 我如何让 jsoup 工作?

标签 java html-parsing jsoup

我一直在检查这些 joup 位以从 div 中获取一些信息:

http://jsoup.org/cookbook/extracting-data/dom-navigation

Document doc = Jsoup.connect(path).get();
Element cat = doc.getElementById("category_1");
Elements links = cat.getElementsByTag("a");
for (Element link : links) 
{
    rstring += link.attr("href");
    rstring += link.text() + "\n";
}

我写的代码不起作用,我已经为此工作了几个小时。

我可以通过不同的 jsoup 函数获得一些我想要的东西,但我需要获取此特定操作中的链接,以便我可以为我的 Android 应用程序填充和排列某些内容。

我正在尝试解析 http://android.myfewclicks.com用于为我的真实网站测试和构建应用程序。

任何帮助都会很棒。 jsoup 就是不合作。

    <table class="table_list">
        <tbody class="header" id="category_1">
            <tr>
                <td colspan="4">
                    <div class="cat_bar">
                        <h3 class="catbg">
                            <a class="collapse" href="http://android.myfewclicks.com/index.php?action=collapse;c=1;sa=collapse;c707bdb315=de9d7f201a0964cbab3d56e683507ad7#c1"><img src="http://android.myfewclicks.com/Themes/default/images/collapse.gif" alt="-" /></a>
                            <a class="unreadlink" href="http://android.myfewclicks.com/index.php?action=unread;c=1">Unread Posts</a>
                            <a id="c1"></a><a href="http://android.myfewclicks.com/index.php?action=collapse;c=1;sa=collapse;c707bdb315=de9d7f201a0964cbab3d56e683507ad7#c1">Category A</a>
                        </h3>
                    </div>
                </td>
            </tr>
        </tbody>

在我的测试论坛上,有四个类别。这个特定部分中的三个链接是 4 个链接中的一组。如果我能弄清楚如何正确地解析这些链接,那么我应该能够在我的应用程序上取得重大飞跃。但是 jsoup 的行为并不像我想象的那样,或者我错过了一些非常重要的东西。

最佳答案

您显然需要先登录才能获取带有href的链接。当我在未登录的情况下在浏览器中打开该网站时,我看到

<tbody class="header" id="category_1">
    <tr>
        <td colspan="4">
            <div class="cat_bar">
                <h3 class="catbg">
                    <a id="c1"></a>Category A
                </h3>
            </div>
        </td>
    </tr>
</tbody>

我可以获得如下链接:

Document document = Jsoup.connect("http://android.myfewclicks.com/").get();
Elements category1links = document.select("#category_1 a");

for (Element category1link : category1links) {
    System.out.println(category1links);
}

哪个打印

<a id="c1"></a>

请注意,没有 href 或文本!

Jsoup 不会自动为您登录,也不会接管您计算机上已安装的任意浏览器的 cookie。您需要自己登录并维护 session cookie。另请参阅Sending POST request with username and password and save session cookie举个例子。

关于java - 我如何让 jsoup 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7595333/

相关文章:

java - setTitle 不工作 Android

java - 如何使用JNI从C调用JAVA方法

java - 解析以字符串形式找到的 HTML 转储的有效方法

java - 删除 html 的正则表达式并没有删除 img 标签

PHP - 从 HTML 中提取文本、翻译并放回

java - 如何解决java.security.AccessControlException

Android - 如何使用 Webview 中的 evaluateJavascript 获取纯 HTML? JSOUP 无法解析结果 HTML

Java awt.Robot : CTRL+ALT+DEL does not bring up desired screen

java - 使用 containsAll() 比较两个 ArrayList

java - 如何防止jsoup转换特殊字符?