001package org.jsoup.examples; 002 003import org.jsoup.Jsoup; 004import org.jsoup.helper.Validate; 005import org.jsoup.nodes.Document; 006import org.jsoup.nodes.Element; 007import org.jsoup.select.Elements; 008 009import java.io.IOException; 010 011/** 012 * Example program to list links from a URL. 013 */ 014public class ListLinks { 015 public static void main(String[] args) throws IOException { 016 Validate.isTrue(args.length == 1, "usage: supply url to fetch"); 017 String url = args[0]; 018 print("Fetching %s...", url); 019 020 Document doc = Jsoup.connect(url).get(); 021 Elements links = doc.select("a[href]"); 022 Elements media = doc.select("[src]"); 023 Elements imports = doc.select("link[href]"); 024 025 print("\nMedia: (%d)", media.size()); 026 for (Element src : media) { 027 if (src.tagName().equals("img")) 028 print(" * %s: <%s> %sx%s (%s)", 029 src.tagName(), src.attr("abs:src"), src.attr("width"), src.attr("height"), 030 trim(src.attr("alt"), 20)); 031 else 032 print(" * %s: <%s>", src.tagName(), src.attr("abs:src")); 033 } 034 035 print("\nImports: (%d)", imports.size()); 036 for (Element link : imports) { 037 print(" * %s <%s> (%s)", link.tagName(),link.attr("abs:href"), link.attr("rel")); 038 } 039 040 print("\nLinks: (%d)", links.size()); 041 for (Element link : links) { 042 print(" * a: <%s> (%s)", link.attr("abs:href"), trim(link.text(), 35)); 043 } 044 } 045 046 private static void print(String msg, Object... args) { 047 System.out.println(String.format(msg, args)); 048 } 049 050 private static String trim(String s, int width) { 051 if (s.length() > width) 052 return s.substring(0, width-1) + "."; 053 else 054 return s; 055 } 056}