我一直在检查这些 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/