Récupérer des informations sur allocine.fr

Contenu du snippet

Ce script va récupérer des informations sur le site Allocine.fr sous forme de tableau.

Ex :

Array
(
[titre_film] => Che - 1ère partie : L'Argentin
[realisateur] => Steven Soderbergh
[acteur] => Benicio Del Toro, Demian Bichir, Santiago Cabrera
[long_metrage] => français, américain, espagnol
[synopsis] => Cuba, 1952 : le général Fulgencio Batista fomente un putsch, s'empare du pouvoir et annule les élections générales. Bravant ce dictateur corrompu, un jeune avocat, Fidel Castro, candidat à la députation sous la bannière du Parti du Peuple, passe à l'action. Dans l'espoir de provoquer un soulèvement populaire, il attaque avec 150 jeunes la caserne de Monaca le 26 juillet 1953. L'opération échoue ; Castro passe deux ans en prison. Amnistié en 1955, il s'exile à Mexico. Pendant ce temps, au Guatemala, un jeune Argentin idéaliste, Ernesto Guevara, se lance en politique. En 1954, lorsqu'un complot militaire soutenu par la CIA renverse le gouvernement, démocratiquement élu, de Jacobo Arbenz, Guevara se réfugie au Mexique. Après une première prise de contact au Guatemala, il rejoint un groupuscule révolutionnaire cubain. le 13 juillet 1955, dans un modeste appartement de Mexico, Raul Castro présente Guevara à son frère aîné, Fidel. Une rencontre discrète, qui marque une date clé dans l'histoire de Cuba. Guevara se voit immédiatement confier une opération de guérilla en vue de renverser Batista. Les Cubains affublent le jeune rebelle d'un sobriquet courant en Argentine : "Che". 26 novembre 1956 : Fidel Castro embarque pour Cuba avec 80 rebelles. L'offensive se solde par un massacre : seuls douze hommes en réchappent, dont le Che (médecin du groupe) et Castro. Réfugiés dans la Sierra Maestra, les "barbudos" déclarent la "guerre totale" au régime de Batista. Guevara prouve ses qualités de combattant et se rend indispensable à ses compagnons. La résistante s'intensifie, gange toute l'île. 1er janvier 1959 : les rebelles célèbrent leur victoire à Santa Clara, le dictateur s'enfuit. Fin de la 1ère partie...
[affiche] => http://images.allocine.fr/r_160_214/b_1_cfd7e1/medias/nmedia/18/36/35/03/18997008.jpg
[duree] => 02h07min
[titre_vo] => Che: Part One
[sortie_cinema] => 2009-01-07
[sortie_salle_lien] => http://www.allocine.fr/film/agenda.html?week=2009-01-07
[sortie_salle] => 7 janvier 2009
[age] => inconnu
[annee_de_production] => 2008
)

Source / Exemple :


<?php
function allocine($allocine)
{
	$absent = Array(
		'titre_film' => 'inconnu',
		'realisateur' => 'inconnu',
		'acteur' => 'inconnu',
		'long_metrage' => 'inconnu',
		'synopsis' => 'inconnu',
		'affiche' => './img/image_introuvable_films.jpg',
		'duree' => 'inconnue',
		'titre_vo' => 'inconnu',
		'sortie_cinema' => 'inconnue',
		'age' => 'inconnu',
		'annee_de_production' => 'inconnue'
	);

	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, 'http://www.allocine.fr/film/fichefilm_gen_cfilm='.$allocine.'.html');
	curl_setopt($curl, CURLOPT_POST, 1);
	curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($curl, CURLOPT_NOBODY, FALSE);
	$recup = curl_exec($curl);
	curl_close($curl);

	// on récupère le titre
	preg_match('#<h1 property="v:itemreviewed">(.*?)</h1>#is', $recup, $titre_film);
	$sortie['titre_film'] = (empty($titre_film)) ? $absent['titre_film'] : trim(utf8_decode(strip_tags($titre_film[0])));

	// on réupère le nom du/des réalisateur(s)
	preg_match('#<!-- End first block -->(.*?)</a>#is', $recup, $realisateur);
	$sortie['realisateur'] = (empty($realisateur)) ? $absent['realisateur'] : trim(utf8_decode(strip_tags($realisateur[0])));
	$sortie['realisateur'] = str_replace("\n", '', $sortie['realisateur']);
	$sortie['realisateur'] = str_replace("\r", '', $sortie['realisateur']);
	$sortie['realisateur'] = preg_replace('/\s\s+/', '', $sortie['realisateur']);
	$sortie['realisateur'] = explode('par', $sortie['realisateur']);
	$sortie['realisateur'] = trim($sortie['realisateur'][1]);

	// on réupère le nom du/des acteur(s)
	preg_match('#<!-- End first block -->(.*?)<!-- end paragraph for second block -->#is', $recup, $acteur);
	$sortie['acteur'] = (empty($acteur)) ? $absent['acteur'] : trim($acteur[0]);
	$sortie['acteur'] = preg_replace('#<p>(.*?)Avec#is', '', $sortie['acteur']);
	$sortie['acteur'] = preg_replace('#plus</a>(.*?)</p>#is', '', $sortie['acteur']);
	$sortie['acteur'] = strip_tags(utf8_decode(trim($sortie['acteur'])));
	$sortie['acteur'] = str_replace("\n", '', $sortie['acteur']);
	$sortie['acteur'] = str_replace("\r", '', $sortie['acteur']);
	$sortie['acteur'] = preg_replace('/\s\s+/', '', $sortie['acteur']);
	$sortie['acteur'] = substr($sortie['acteur'], 0, -1);

	// on réupère le long-métrage du film
	preg_match('#Long-m[^"]+trage(.*?)\.#is', $recup, $long_metrage);
	$sortie['long_metrage'] = (empty($long_metrage)) ? $absent['long_metrage'] : strip_tags(utf8_decode(trim($long_metrage[1])));
	$sortie['long_metrage'] = str_replace("\r", '', $sortie['long_metrage']);
	$sortie['long_metrage'] = str_replace("\t", '', $sortie['long_metrage']);
	$sortie['long_metrage'] = str_replace("\n", '', $sortie['long_metrage']);

	// on récupère le synopsis
	preg_match('#<span class="bold">Synopsis : </span>(.*?)</p>#is', $recup, $synopsis);
	$synopsis[1] = str_replace("&#8217;", "'", $synopsis[1]);
	$synopsis[1] = str_replace('&#8230;', '...', $synopsis[1]);
	$synopsis[1] = str_replace('&#8211;', '-', $synopsis[1]);
	$synopsis[1] = str_replace("\n", '', $synopsis[1]);
	$synopsis[1] = str_replace('œ', 'oe', $synopsis[1]);
	$synopsis[1] = str_replace('&#8221;', '"', $synopsis[1]);
	$synopsis[1] = str_replace('&#8220;', '"', $synopsis[1]);
	$sortie['synopsis'] = (empty($synopsis)) ? $absent['synopsis'] : trim(utf8_decode($synopsis[1]));

	// on récupère l'url de l'affiche
	preg_match('#<img src=\'http://images.allocine.fr/r_160_214/(.*?)\'[^"]+alt="[^"]+"[^"]+title="[^"]+"[^"]+/>#is', $recup, $affiche);
	$sortie['affiche'] = ($affiche[1] == 'http://images.allocine.fr/r_160_214/b_1_cfd7e1/commons/emptymedia/AffichetteAllocine.gif') ? $absent['affiche'] : 'http://images.allocine.fr/r_160_214/'.$affiche[1];

	// on récupère la durée
	preg_match_all('#[0-9]+h[0-9]+min#is', $recup, $duree);
	$sortie['duree'] = (empty($duree[0][0])) ? $absent['duree'] : trim(str_replace(' min', '', utf8_decode($duree[0][0])));

	// on récupère le titre original
	preg_match('#Titre original : <span class="purehtml"><em>(.*?)</em></span>#is', $recup, $titre_vo);
	$sortie['titre_vo'] = (empty($titre_vo)) ? $absent['titre_vo'] : trim(utf8_decode($titre_vo[1]));

	// on récupere la date de sortie au cinéma
	preg_match('#<a href="/film/agenda\.html\?week=(.*?)">(.*?)</a>#is', $recup, $sortie_cinema);
	$sortie['sortie_cinema'] = (empty($sortie_cinema)) ? $absent['sortie_cinema'] : trim(utf8_decode($sortie_cinema[1]));

	if($sortie['sortie_cinema'] != 'inconnue')
		$sortie['sortie_salle_lien'] = 'http://www.allocine.fr/film/agenda.html?week='.$sortie_cinema[1];
	else
		$sortie['sortie_salle_lien'] = 'inconnue';

	if($sortie['sortie_cinema'] != 'inconnue')
		$sortie['sortie_salle'] = trim(utf8_decode($sortie_cinema[2]));
	else
		$sortie['sortie_salle'] = 'inconnue';

	// on récupère les restriction d'âge si il y a
	preg_match('#<span class="insist">(.*?)</span>#is', $recup, $age);
	$sortie['age'] = (empty($age)) ? $absent['age'] : trim(utf8_decode($age[1]));

	// on récupère l'année de production
	preg_match('#Ann..?e de production.*<a href=["\'][^>]+["\']>([0-9]+)</a>#isU', $recup, $annee_de_production);
	$sortie['annee_de_production'] = (empty($annee_de_production)) ? $absent['annee_de_production'] : trim(utf8_decode($annee_de_production[1]));

	return $sortie;
}
?>

Conclusion :


Je suis ouvert à toute modification, amélioration... etc

et pensez à enregistrer votre page en UTF-8 sans BOM

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.