【问题标题】:how do i get jsoup to work?我如何让 jsoup 工作?
【发布时间】:2011-09-29 23:57:18
【问题描述】:

我一直在通过这些 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 个中的 1 个。如果我能弄清楚如何准确地解析这些链接,那么我应该能够在我的应用程序上取得很大的飞跃。但是 jsoup 并没有按照我的想法行事,或者我错过了一些非常重要的东西。

【问题讨论】:

  • 您能发布您要解析的确切 HTML sn-p 吗?
  • 它是我的测试站点的来源:android.myfewclicks.com.
  • 基本纲要正在为主站点制作一个应用程序,但我根本无法让 jsoup 正确行事。
  • 让我重新表述这个问题:您能否发布一个 minimal 的 HTML sn-p 来演示您尝试使用 jsoup 解决的问题? (http://android.myfewclicks.com/的来源有点太长了:))
  • 我更新了以上内容。我希望只有一种方法可以让我维护会话并解析文档,就像 xml 解析器解析 xml 文件一样。任何帮助将不胜感激。

标签: java html-parsing jsoup


【解决方案1】:

您显然需要先登录才能获得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。您需要自己登录并维护会话 cookie。有关示例,另请参阅 Sending POST request with username and password and save session cookie

【讨论】:

  • 非常感谢您的帮助。我在浏览器上登录,我从没想过它会隐藏这样的链接。不知道该网站如何为客人工作。但这是一个问题,我如何才能以访客身份运行应用程序来获得重要的东西。原因是,如果该应用程序成功,我将在所有 SMF 论坛上发布它。但是看了之后,我可能已经回答了我自己的问题,任务浏览不需要太多的东西来导航。
  • 您可能对这个项目有任何其他意见,我将不胜感激。 :) 再次感谢。
  • 抱歉,我不熟悉您的网站使用的表单引擎。这也与编程无关。考虑在论坛引擎公司的支持网站上提问。
猜你喜欢
  • 2022-10-04
  • 1970-01-01
  • 2021-07-04
  • 2012-07-06
  • 2013-10-31
  • 2017-01-06
  • 2019-05-06
  • 1970-01-01
  • 2014-11-07
相关资源
最近更新 更多