如何检测 URL 到不同的页面(也在同一域中)

How to detect URL to different page (also in the same domain)

我对在页面中检测 url 有疑问。我正在寻找解决问题的最佳方法。对于下载页面,我使用 Jsoup。

URI uri = new URI("http://www.niocchi.com/");
Document doc = Jsoup.connect(uri.toString()).get();
Elements links = doc.select("a")

这个页面给我一些链接。例如:

http://www.niocchi.com/#Package organization
http://www.niocchi.com/#Architecture
http://www.linkedin.com/in/ivanprado
http://www.niocchi.com/examples/

我只需要获取不引用段落的不同页面。 我想从这个例子中得到:

http://www.linkedin.com/in/ivanprado
http://www.niocchi.com/examples/

您可以将它们转换为字符串,然后根据# 标记拆分它们。

例如:

public void stringSplitter() {
        String result = null;
        // example
        String[] stringURL = {"http://www.niocchi.com/#Package organization", "http://www.niocchi.com/#Architecture", 
                "http://www.linkedin.com/in/ivanprado", "http://www.niocchi.com/examples/ "};

        try {
            for (int i = 0; i < stringURL.length; i++) {
            String [] parts = stringURL[i].split("#");

            result = parts[0];
            System.out.println(result);
            }
        }catch (Exception ex) {
            ex.printStackTrace();
        }           
    }

输出为:

http://www.niocchi.com/
http://www.niocchi.com/
http://www.linkedin.com/in/ivanprado
http://www.niocchi.com/examples/ 

我什至会考虑将方法的一部分设置为 return only unique URL's

看起来您只想 select 这些 <a> 具有 href 属性的值是从 # 以外的字符构建的。在这种情况下,您可以使用

doc.select("a[href~=^[^#]+$]")

attribute~=regex 是用于检查 attribute 的部分值是否可以与正则表达式匹配的语法。

  • 接受一个或多个非 # 字符的正则表达式可以像这样 [^#]+
  • 正则表达式只接受整个字符串(不仅是它的一部分)需要用 ^$ 包围 anchors 代表
    • ^ - 字符串的开头,
    • $ 字符串结尾。