我正在使用JSoup列出网页上的所有链接,但在我运行第一个程序后,我立即注意到所有空链接或自我链接(href="#"
)。所以我尝试使用以下代码删除它们:
if (link != "" && link != "#" && link != "/") {
links.add(link);
}
但由于某种原因,它只会过滤掉""
和"/"
链接。我以为这与隐形人物有关,但我无法弄明白。在我的控制台中,所有显示为链接的都是#
。
有没有人知道最近发生了什么?
答案 0 :(得分:2)
你用错误的方式比较了字符串,
以下是修复:
if ("".equals(link) && "#".equals(link) && "/".equals(link)) {
links.add(link);
}
答案 1 :(得分:1)
您可以过滤掉所有以#开头或为空的链接或仅包含/在选择查询期间的链接,例如
document.select("a:not([href^=#])").select("a[href~=^/?[^/]+]");
这转换为选择所有不以#开头的标签元素,并且可能以/开头,但在这种情况下,它们不能只包含/
在这里,您可以找到我为测试准备的示例Groovy脚本 - https://gist.github.com/wololock/719985e6c48f40f8935f Java代码几乎相同,只需记住;在每一行的末尾并更改为“。”。此示例显示如何在不进行任何进一步过滤的情况下提取所有链接。