itemprop=datePublished

regex et cheerio

a marqué ce sujet comme résolu.

Bonsoir,

Je voudrais récupérer avec le module cheerio (node.js) la date du meta itemprop=datePublished.

J'ai donc fait :

1
2
3
var $ = cheerio.load(html);

var datePublished = $('meta[itemprop=datePublished]').attr('content');

Problème 1: Ce que je fais pour l'instant ne me récupère que l'année : 2015.

Problème 2: Tous les sites web n'utilisent pas la même notation, certains utilisent un meta, d'autres time ou plus rarement un div. De plus, certains sites stockent la valeur dans l'attribut datetime, d'autre dans l'attr content.

1
2
3
<time itemprop="datePublished" datetime="2015-08-26T13:45:00-04:00" title="Published: August 26, 2015 1:45 pm EDT">August 26, 2015</time>

<meta itemprop="datePublished" content="2015-08-26">

je souhaite donc résoudre ces 2 problèmes, j'ai pensé à une regex, mais je bloque. Quelqun pourrait m'éclairer et me proposer une soultion ?

Merci.

+0 -0

Alors, je ne connais pas les différences entre Cheerio et jQuery (s'il y en a) mais pour le problème 2, je pense que tu peux d'abord chercher tous les balises avec itemprop=datePublished et pas que meta, puis tester les différentes possibilités. Ça donne quelque chose comme ça :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
var $ = cheerio.load(html);

var tag = $('[itemprop=datePublished]');
var datePublished;
var datetime = tag.attr('datetime');

if(datetime != "") {
  datePublished = datetime;
} else {
  datePublished = tag.attr('content');
}
+0 -0

Merci pour ta réponse, ça marche sauf que malheureusement le problème 1 n'est pas résolu. Pour une date du style :

1
<time itemprop="datePublished" datetime="2015-08-26T18:00:04+02:00">le 26/08/2015 à 18:00</time>

Je n'ai que '2015' d'afficher dans ma base de donnée au lieu d'avoir la totalité de l'attribut datetime. je ne comprend pas.

[EDIT] Si ça marche je suis con, je m’étais trompé de type pour enregistrer ma date dans ma bdd. Merci :)

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte