2017-09-06 1 views
0

Est-il possible d'effectuer plusieurs GetHTMLElement dans le même flux de données? Je suis en train de Scrapy quelques attributs effectuant tout d'abord l'GetHTMLElement (attribut sélection) et après avoir effectué un processeur UpdateAttributegetHTML plusieurs attributs dans Apache Nifi

(attrib: ${HTMLElement}) 

Cette première partie fonctionne bien, mais lorsque je tente d'effectuer une seconde GetHTMLElement, il ne peut pas analyser quoi que ce soit de la flowContent ...

Je les ai effectué de 2 manières séparées et les a fusionné avec MergeContent et le travail ... Mais maintenant je dois effectuer 2 « Obtient » dans différentes parties d'un flux (après une scission) et la fusion ne fonctionnera pas ...

Merci pour votre aide ... J'ai tryed de demander dans la communauté Hortonworks (https://community.hortonworks.com/questions/131614/multiple-gethtmlelement.html)

Répondre

0

La raison est que GetHTMLElement peut soit mettre l'élément extrait dans un flowfile attribut ou flowfile contenu en fonction de la valeur de la propriété Destination configurée. GetHTMLElement a quatre relations qu'il peut produire:

  • élément pas trouvé - élément n'a pu être trouvée dans le document HTML. L'entrée HTML d'origine restera inchangée dans le contenu de FlowFile. La relation "original" ne sera pas invoquée dans ce scénario.
  • succès - avec succès analysable élément HTML
  • originale - L'entrée HTML original
  • html invalide - La syntaxe HTML d'entrée est invalide

Dans le succès relation, le fichier de flux résultant aura soit le contenu de l'élément extrait, soit si l'élément a été placé dans un attribut, pas de contenu. Cela est dû à la façon dont les éléments sont appariés (voir GetHTMLElement#186). Vous pouvez également acheminer la relation originale au deuxième GetHTMLElement processeur pour extraire l'élément, mais comme vous l'avez, vous aurez deux flowfiles uniques, chacun avec un élément.

J'ai déposé un Jira NIFI-4356 pour améliorer le traitement de ce cas en conservant le contenu d'origine dans les fichiers de flux résultants lorsque la destination est attribut.

+0

Merci beaucoup! Il serait intéressant d'implémenter CSS Selector pour chaque propriété que vous pouvez ajouter, obtenant de nombreux attributs du HTML avec un seul processeur (comme EvaluateJSONPath ou EvaluateXPath) –