itemprop=datePublished

regex et cheerio

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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.

Édité par Seb

Seb.

+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');
}

Médicament flemmard aux pul(p)sions imprécises. “Don’t wait for the perfect moment. Take the moment and make it perfect.”

+0 -0
Auteur du sujet

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 :)

Édité par Seb

Seb.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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