2 votes

Comment extraire la valeur d'une div spécifique dans HTML en parcourant avec Apache Nutch?

Je fais du crawling avec nutch 2.2 et les données que je récupère sont les metatags, comment extraire la valeur d'une div spécifique en html avec le crawling dans apache nutch

3voto

Sachin Points 921

Vous devrez écrire un plugin qui étendra HtmlParseFilter pour atteindre votre objectif.

Vous pouvez utiliser un parseur HTML tel que Jsoup pour extraire les URL que vous souhaitez et les ajouter en tant que liens sortants.

Implémentation d'un filtre HtmlParseFilter :-

        public ParseResult filter(Content content, ParseResult parseResult,
              HTMLMetaTags metaTags, DocumentFragment doc) {
                // obtenir le contenu html
                String htmlContent = new String(content.getContent(), StandardCharsets.UTF_8);
                // analyser le html en utilisant jsoup ou une autre bibliothèque.
                Document document = Jsoup.parse(content.toString(),content.getUrl());
                Elements elements = document.select( newLinks=new ArrayList();
                    List outLinks=new ArrayList();
                    String absoluteUrl;
                    Outlink outLink;
                    for (Element element : elements){
                     absoluteUrl=element.absUrl("href");
                     if(includeLinks(absoluteUrl,value)) {
                        if(!newLinks.contains(absoluteUrl)){
                          newLinks.add(absoluteUrl);
                          outLink=new Outlink(absoluteUrl,element.text());
                          outLinks.add(outLink);
                          }
                        }
                      }
                    Parse parse = parseResult.get(content.getUrl());
                    ParseStatus status = parse.getData().getStatus();
                    Title title = document.title();
                    Outlink[] newOutLinks = (Outlink[])outLinks.toArray(new Outlink[outLinks.size()]);
                    ParseData parseData = new ParseData(status, title, newOutLinks, parse.getData().getContentMeta(), parse.getData().getParseMeta());
                    parseResult.put(content.getUrl(), new ParseText(elements.text()), parseData);
                    }
                   //retourner parseResult avec des liens sortants modifiés
                   return parseResult;
            }

Construisez un nouveau plugin en utilisant ant et ajoutez un plugin dans nutch-site.xml.

    plugin.includes
    protocol-httpclient||urlfilter-regex|parse-(tika|html|js|css)|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)|indexer-elastic

Et dans parser-plugins.xml vous pouvez utiliser votre plugin personnalisé à la place du plugin par défaut utilisé par tika de cette manière :-

2voto

Abhishek Points 708

Vous devez remplacer le filtre d'analyse et utiliser le sélecteur Jsoup pour sélectionner un div spécifique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X