Cron de récupération d'actualités RSS

Article ajouté le 13/01/2019

Cron de récupération d'actualités RSS

Ce petit script va vous permettre d'ajouter à la volée des actualités sur votre site Internet. Grâce à lui, vous pourrez stocker rapidement toutes les actus provenant de flux rss standards.

L'idée étant de créer un peu plus de contenu dynamique sur votre site pour optimiser le contenu et améliorer votre référencement naturel.

Dans le bout de code que je vous propose ci-dessous, vous n'avez qu'à remplacer les URLs proposées en début de script et créer la base de données en fonctions des requêtes SQL.

Pour la premières requête SELECT, il s'agit ici d'un base de mots clefs sur lesquels effectuer une recherche afin de pouvoir scraper les actualités.

Pour la secondes requêtes il s'agit simplement de votre actualité scrapée que vous pourrez ensuite afficher à votre convenance.

Voici le bout de code PHP à mettre par exemple dans un cron tous les jours :

// connexion à la base préalable

$rss = array(
			'http://www.cnetfrance.fr/feeds/rss/internet/',
			'http://www.clubic.com/internet/actualites.rss'
		);

$tkeyword = array();
$sql = "SELECT keyword FROM p3x_keyword";
foreach($db->query($sql) as $data) { $tkeyword[] = $data['keyword']; }

foreach($rss as $feed)
{
	$xml = simplexml_load_file($feed);
	$tfeed = explode('/', str_replace('http://www.', '', $feed));
	$auteur = $tfeed[0];
   
	foreach($xml->channel->item as $item)
	{
		$checkitem = false;
	   
		$ttitle = explode('-', strip_specialchar($item->title));
	   
		foreach($ttitle as $keyword)
		{
			if(in_array($keyword, $tkeyword))
			{
				$checkitem = true;
			}
		}
	   
		if($checkitem)
		{
			$titre = trim($item->title);
			$description = trim(strip_tags($item->description));
			$datet = trim($item->pubDate);
			$datet = new DateTime($datet);
			$date = $datet->format('Y-m-d H:i:s');
			$link = trim($item->link);
	   
			$sql = "SELECT id_actualite_article FROM p3x_actualite_article WHERE titre_rewrite='".strip_specialchar($item->title)."'";
			$query = $db->prepare($sql);
			$query->execute();
			$row = $query->fetch();
			if(empty($row[0]) && $description!='[...]' && !empty($description) && !empty($titre) && !empty($date) && !empty($link))
			{
				$sql = "INSERT INTO p3x_actualite_article(titre,
														titre_rewrite,
														description,
														date,
														auteur,
														lien
													) VALUES(
														:titre,
														:striptitre,
														:description,
														:date,
														:auteur,
														:link
													)";
				$query = $db->prepare($sql);
				$query->bindValue(':titre', $titre, PDO::PARAM_STR);
				$query->bindValue(':striptitre', strip_specialchar($titre), PDO::PARAM_STR);
				$query->bindValue(':description', tronquer($description,250), PDO::PARAM_STR);
				$query->bindValue(':date', $date, PDO::PARAM_STR);
				$query->bindValue(':auteur', $auteur, PDO::PARAM_STR);
				$query->bindValue(':link', $link, PDO::PARAM_STR);
				$query->execute();
			}
		}
	}
}

Poster un commentaire

Commentaire

Nom

Adresse e-mail

Votre adresse e-mail n'est pas publiée lorsque vous ajoutez un commentaire.
Tous les champs sont obligatoires pour soumettre votre commentaire.