Question

J'utilise Crawler4j pour crawler un site Web.Lorsque je visiterai une page, je voudrais obtenir le texte de lien de tous les liens, pas seulement les URL complètes.Est-ce possible?

Merci d'avance.

Était-ce utile?

La solution

Dans la classe où vous dérivez de WebCrawler, obtenez le contenu de la page, puis appliquez une expression régulière.

Map<String, String> urlLinkText = new HashMap<String, String>();
String content = new String(page.getContentData(), page.getContentCharset());
Pattern pattern = Pattern.compile("<a[^>]*href=\"([^\"]*)\"[^>]*>([^<]*)</a[^>]*>", Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
    urlLinkText.put(matcher.group(1), matcher.group(2));
}

Alors sculptez UrllinkText quelque part que vous pouvez en arriver une fois que votre crawl est terminé.Par exemple, vous pouvez en faire un membre privé de votre classe de crawler et ajouter un getter.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top