我如何让jsoup工作?

时间:2011-09-29 09:36:46

标签: 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并不像我认为的那样表现,或者我错过了非常重要的东西。

1 个答案:

答案 0 :(得分: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以获取示例。