0

JSoupを使用してWebページのすべてのリンクを解析し、収集されたこれらのリンクの応答コードをテストします。

私が抱えている問題は、私がテストしているページのいくつかに、以下を使用して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;
        }
    }
4

1 に答える 1

1

まず、リストの代わりにセットを使用することをお勧めします。(コレクションに慣れていない場合、セットは繰り返し要素がないことを確認します)

また、manageURL(String url);のようなメソッドを配置します。コレクションに追加する前に。いくつかのテストを入れて、希望どおりに動作することを確認します。URLの絶対パス、正規パスをテストし、httpまたはhttpsでプロトコル化されていることを確認するのと同じです。

于 2012-05-15T11:15:46.700 に答える