最近我开始使用Jsoup并且发现了这个示例代码。因为我是新手,我无法弄清楚这是如何找到网站上的所有链接的。有人能解释一下for循环中会发生什么吗?大多数情况下,我之前从未使用过for循环的这种语法,所以对我来说有点混乱。我当然不明白循环包含什么。谢谢!
Elements links = doc.select("a[href]");
for (Element link : links) {
// get the value from href attribute
System.out.println("\nlink : " + link.attr("href"));
System.out.println("text : " + link.text());
}
答案 0 :(得分:2)
这是因为Elements
实现了Iterable<Element>
(org.jsoup.select.Elements
和java.lang.Iterable
)
因此,当您使用for
语法时,您会遍历Elements
个链接,这实际上是List
类型的Element
。 “元素链接”是在迭代时分配给“链接”中每个元素的局部变量。
有关详细信息,请参阅:
http://jsoup.org/apidocs/org/jsoup/select/Elements.html 和 http://jsoup.org/apidocs/index.html
答案 1 :(得分:2)
正如名称所示,课程Elements
和Element
是相似的。一个由已选择的单个元素组成,另一个元素是组合在一起的多个元素的集合。
Elements links
由Element
- 已被选中的对象组成。
Elements
类在java中实现以下接口:
Cloneable, Iterable< Element>, Collection< Element>, List< Element>.
Elements
类是使用ArrayList<Element>
实现的,因此很容易在Element
集合中添加和删除Elements
个对象。
对于for
- 循环,这是一种迭代Element
集合中名为链接的每个Elements
对象的简单方法。
循环将遍历集合,并将变量link
分配给名为Element
的集合中的当前links
对象。在for
- 循环内部,将打印当前link
的内容,循环将从集合中的下一个Element
对象开始。
此循环的语法通常称为for-each
循环,因为它迭代列表或集合中的每个对象。
阅读here!
查看Jsoup API文档,详细了解如何使用它!
如果您想了解有关如何实施Jsoup的更多信息,请查看source code!