2014-10-11 87 views
1

我正在使用JSoup列出网页上的所有链接,但在运行第一个程序后,我立即注意到所有空链接或自链接(href="#")。于是,我就用下面的代码删除这些:如何从链接列表中删除“#”链接

if (link != "" && link != "#" && link != "/") { 
    links.add(link); 
} 

但是由于某种原因,仅过滤掉"""/"链接。我认为这与隐形角色有关,但我无法弄清楚。在我的控制台中显示的所有链接都是#

有没有人知道发生了什么事?

+1

使用String.equals比较字符串 – Reimeus 2014-10-11 15:37:03

+0

当然!完全忘了...... – Creator13 2014-10-11 15:39:50

回答

2

你比较字符串错误的方式,

这里是修复:

if ("".equals(link) && "#".equals(link) && "/".equals(link)) { 
links.add(link); 

}

1

您可以过滤掉以#或为空或包含所有链接仅在选择查询期间/例如

document.select("a:not([href^=#])").select("a[href~=^/?[^/]+]"); 

这相当于选择所有未使用#开始标签元件,并且可以与启动/但在这种情况下,他们不能只包含/

在这里你可以找到一个样本Groovy脚本我准备测试 - https://gist.github.com/wololock/719985e6c48f40f8935f Java代码几乎相同,只记得一下;在每一行的结尾处并改变为“to”。这个例子展示了如何提取所有的链接,而不需要进一步的过滤。