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

时间:2015-02-22 17:03:44

标签: java url uri jsoup

我对页面中的检测网址有疑问。我找到了解决问题的最佳方法。对于下载页面,我使用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/

2 个答案:

答案 0 :(得分:0)

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

例如:

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/ 

我甚至会考虑设置方法的一部分以仅返回唯一的网​​址

答案 1 :(得分:0)

您似乎只想选择具有<a>属性的href #,其值为doc.select("a[href~=^[^#]+$]") 的字符。在这种情况下,您可以使用

attribute~=regex

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

  • 接受一个或多个非[^#]+字符的正则表达式可能如下^
  • 仅接受整个字符串(不仅仅是其部分)的正则表达式需要包含$^ anchors代表
    • $ - 字符串的开头,
    • {{1}}字符串的结尾。