Jsoup试图测试javascript链接

时间:2012-05-15 10:46:13

标签: java jsoup

我正在使用JSoup来解析所有链接的网页,然后测试这些收集链接的响应代码。

我遇到的问题是我正在测试的一些页面有使用以下命令打开javascript弹出窗口的链接:。我确信有一种简单的方法可以避免选择此链接,但我不能再想了!

我的代码:

PingUrls(String pageUrl) {
        url = pageUrl;
        int i = 0;
        int retries = 3;

        while (i < retries){
            try {
                response = Jsoup.connect(url)
                        .userAgent("Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/535.21 (KHTML, like Gecko) Chrome/19.0.1042.0 Safari/535.21")
                        .timeout(10000)
                        .execute();
                success = true;
                break;
            } catch (IOException e) {
            }
            System.out.println("Attempt "+i);
            i++;
        }
    }

    public int getUrlStatus(){
        if(success){
            int statusCode = response.statusCode();
            return statusCode;
        }else {
            return 404;
        }
    }

    public ArrayList<String> getLinks(String targetValue){
        ArrayList<String> urls = new ArrayList<String>();
        try {
            Document doc = response.parse();

            Elements element = doc.select(targetValue+" a[href]");
            for (Element page : element){
                urls.add(page.attr("abs:href"));
            }           
            return urls;
        } catch (IOException e) {
            System.out.println(e);
            return null;
        }
    }

1 个答案:

答案 0 :(得分:1)

首先,我要使用Set而不是List。 (如果您不熟悉集合,则集合将确保没有重复的元素)

另外,我提出了一个像manageURL(String url)这样的方法;在将其添加到Collection之前。在其中进行一些测试,以确保它按照您想要的方式进行。就像测试url的绝对路径,规范路径一样,并确保它是http或https protocoled。