Je travaille sur un projet où j'ai besoin de récolter des données sur le site web, donc j'utilise webharvest.Webharvest if/else et try/catch toujours réussi
Je suis confronté à un problème où les données que je récolte (commentaires des sites d'informations) se trouvent parfois sur plus d'une page. J'essaye de le configurer pour rechercher le lien vers la deuxième page des commentaires dans le xpath de la page Web. Le problème est que si j'essaie un test if
, la condition passe toujours, et si j'essaie une instruction try
, le corps try
réussit toujours. Il en résulte que mon script extrait les commentaires de la première page (s'il n'y en a qu'un), deux fois. Les articles avec deux séries de commentaires fonctionnent à merveille, cependant. Donc, ma question concerne la syntaxe de if
conditions et try
déclarations. La documentation sur Webharvest est limitée en ce qui concerne ces fonctions.
Voici ce que j'essaie. Tout d'abord, le if
test:
<var-def name="secondPageLink">
<xpath expression="/a[@class='next']/@href">
<var name="firstPage"/>
</xpath>
</var-def>
<case>
<if condition="${secondPageLink != null}">
[ process second page ]
</if>
</case>
En second lieu, le try
/catch
:
<try>
<body>
<var-def name="secondPageLink">
<xpath expression="/a[@class='next']/@href">
<var name="firstPage"/>
</xpath>
</var-def>
[ continue to process page ]
</body>
<catch>
</catch>
</try>
Le problème avec le test if
est que malgré le fait que la variable est vide lorsque aucune seconde page existe (qui Je peux voir à partir du débogage dans le gui), le if
semble retourner vrai, et dirige son corps.
Je peux plus facilement voir pourquoi le try
/catch
ne fonctionne pas correctement, car un xpath ne renvoyant aucune valeur (si la deuxième page n'existe pas) ne constituerait pas une 'erreur' en tant que telle et l'essai toujours réussir. Une autre difficulté est que le @href du lien de page suivante est relatif, et doit donc être ajouté à l'URL de la première page (ou l'URL de base de l'article, en fait, mais la même chose ici), ce qui signifie que mon html -to-xml prend à nouveau l'URL $ {firstPage} $ {secondPageLink}, qui finit simplement par être à nouveau l'URL de la première page, et webharvest traite donc la première page une seconde fois.
Si quelqu'un peut reformuler mon test if
pour retourner false lorsque le xpath de secondPageLink renvoie une valeur vide, je serais très reconnaissant!
J'ai également essayé de tester la chaîne exacte que j'attends du secondPageLink. Donc 'condition =" $ {secondPageLink == '? Page = 2'} "'. Cependant, cela ne retourne jamais vrai, donc mes articles de deux pages ne retournent que la première page. – Jangari