Domanda

Sto usando Crawler4J per strisciare un sito web.Quando visito una pagina, vorrei ottenere il testo di collegamento di tutti i collegamenti, non solo gli URL completi.È possibile?

Grazie in anticipo.

È stato utile?

Soluzione

Nella classe in cui deriva da Webcrawler, ottenere il contenuto della pagina e quindi applicare un'espressione regolare.

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

Allora Stick URLLinkText da qualche parte che puoi arrivarci una volta che il tuo gattletto è completo.Ad esempio, potresti renderlo un membro privato della tua classe crawler e aggiungere un getter.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top