5

URL を受け取り、そのページのすべてのリンクを見つけるメソッドがあります。ただし、リンクが機能しているかどうかを確認すると、一部のリンクが奇妙に見えるため、リンクのみを取得している場合は心配です。たとえば、www.google.com のリンクを確認すると、http ステータス コードを返さない 6 つの壊れたリンクが表示され、その壊れたリンクには「プロトコルがありません」と表示されます。グーグルのホームページに壊れたリンクがあるとは思いもしません。壊れたリンクの例: /preferences?hl=en このリンクが Google ホームページのどこにあるかわかりません。リンクだけをチェックしているのか、それともリンクであってはならないコードを抽出している可能性があるのか​​知りたいです。

リンクの URL をチェックするメソッドは次のとおりです。

public static List getLinks(String uriStr) {

    List result = new ArrayList<String>();
    //create a reader on the html content
    try{
        System.out.println("in the getlinks try");
    URL url = new URI(uriStr).toURL();
    URLConnection conn = url.openConnection();
    Reader rd = new InputStreamReader(conn.getInputStream());

    // Parse the HTML
    EditorKit kit = new HTMLEditorKit();
    HTMLDocument doc = (HTMLDocument)kit.createDefaultDocument();
    kit.read(rd, doc, 0);

    // Find all the A elements in the HTML document
    HTMLDocument.Iterator it = doc.getIterator(HTML.Tag.A);
    while (it.isValid()) {
        SimpleAttributeSet s = (SimpleAttributeSet)it.getAttributes();

        String link = (String)s.getAttribute(HTML.Attribute.HREF);
        if (link != null) {
                // Add the link to the result list
                System.out.println(link);
            //System.out.println("link print finished");
            result.add(link);
        }
        //System.out.println(link);
        it.next();
    }
    }
4

1 に答える 1