public Collection<CollectionAndArtist> extractNames(PageInfo info) {
        // HTML herunterladen zur Regex-Untersuchung
        String pageHTML = info.getContent();
        if (pageHTML == null) {
            System.out.println("## ERROR could not download '" + info.getURL() + "'");
            return new LinkedList<CollectionAndArtist>();
        }

        // Reguläre Ausdrücke zum Finden der Namen
        Pattern[] patterns = new Pattern[]{

                // Wikipedia naiv
                Pattern.compile("<a href=\"([^\"]+)\"[^>]+>([^< ]+ [^< ]+)</a>"),
        };

        List<CollectionAndArtist> names = new ArrayList<CollectionAndArtist>();

        // Fügt jeden Treffer als Name zur aktuellen Seite hinzu
        for (Pattern p : patterns) {
            Matcher m = p.matcher(pageHTML);

            while (m.find()) {
                String url = m.group(1);
                String name = m.group(2);

                if (url.startsWith("/")) url = "http://de.wikipedia.org" + url;
                if (url.startsWith("#") || url.contains("=") || url.matches(".*:[^/]+.*")) {
                    //System.out.println("## DISCARDED NAME '" + url + "'");
                    continue;
                }

                CollectionAndArtist item = new CollectionAndArtist(info.getCollection(), name);
                item.crawler = CRAWLER_TAG;
                item.url = info.getURL().toString();
                item.comment = this.getClass().getName();

                if (name.contains(" ")) {
                    String[] parts = name.split(" ", 2);
                    if (parts.length > 1) {
                        item.fname = parts[0];
                        item.lname = parts[1];
                    }
                }

                names.add(item);
            }
        }

        return names;
    }