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();
}
}