1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
| <?php
set_time_limit(0);
require_once('resize.php');
require_once('directory.php');
//require_once("db.class.php");
$compteur = 1;
while( $compteur < 2) // On utilise un compteur car il y a deux pages de liste de news
{
$compteur++;
$url_2 = "http://(...).com/manasp.asp?id=20000".$compteur."&page=1";
$content_liste_news = file_get_contents($url_2); // On ouvre url
preg_match_all("|http://(...)/News/Detail/.*?\.htm|", $content_liste_news, $url_liste_news); // On récupère la liste des urls
//connection à la base de donnée
$link = mysql_connect("(...)", "(...)", "");
mysql_select_db("(...)", $link);
//Pour chaque article, on récupère le titre, la date et le résumé
foreach($url_liste_news[0] AS $url_news)
{
eregi('([0-9]+)-([0-9]+)-([0-9]+)',$url_news,$date_news_test); // on récupère la date qui ce trouve dans l'url et on la traite pour pouvoir travailler dessus
$date_news = $date_news_test[0];// on réutilisera $date_news plus tard
$var0 = strlen($date_news_test[2]);
if( $var0 == 1)
{
$date_news_test[2] = '0'.$date_news_test[2];
}
$var1 = strlen($date_news_test[3]);
if($var1 == 1)
{
$date_news_test[3] = '0'.$date_news_test[3];
}
$date_news_test = $date_news_test[1].'-'.$date_news_test[2].'-'.$date_news_test[3];
$now = date("Y-m-d", mktime(0, 0, 0, date("m"), date("d") - 5, date("Y")));
if($date_news_test < $now)
{
echo "ON NE PREND PAS LES NEWS DE PLUS DE 5 JOURS\n";
break;
}
$content_news = file_get_contents($url_news);
eregi('<td height="58" align="center" valign="bottom" class="hangzhoushangchang style9" style="padding:20px 5px 0px 5px"><h1 title="(.*)">.*</h1></td></tr>',$content_news , $titre_news); //on récupère le titre de la news
$titre_news = $titre_news[1];
eregi("<h2>(.+)</h2>", $content_news, $resume_news); //on récupère le petit résumé en haut de news
$resume_news = $resume_news[1];
$titre_news = iconv('gb2312','UTF-8', $titre_news);
$resume_news = iconv('gb2312','UTF-8', $resume_news);
// on vérifie que la news n'est pas déjà présente dans la base.
$reponse = mysql_query('SELECT id FROM news WHERE titre = "'.$titre_news.'" AND resume = "'.$resume_news.'"');
$donnees = mysql_num_rows($reponse);
if ($donnees != 0)
{
echo "NEWS DEJA PRESENTE \n";
continue;
}
eregi("http://(...).com/News/Detail/".$date_news."/(.+).htm", $url_news, $id_page);//On récupére le numéro de page de la news
$id_page = $id_page[1];
preg_match_all("|".$id_page."-[0-9]*|",$content_news, $id_nbrpage); // je cherche le nombre de page de l'article
$id_nbrpage = array_unique($id_nbrpage[0]); // J'enlève les doublons du tableau.
//echo'<pre>';
//print_r($id_nbrpage);
//echo'<pre/>';
//Je cherche la news
eregi('<table width="600" height="58" border="0" cellpadding="0" cellspacing="0">(.*)<td height="24" align="center" valign="top" class="text11" style="padding-left:30px;padding-right:30px;padding-top:5px;letter-spacing:1px;line-height:18px; height:auto;border-top:#cdcdcd 1px dotted"><span class="small_title">', $content_news, $news);
$news = $news[1];
// echo 'Strlen news avant : '.strlen($news).'<br>';
if($id_nbrpage != '') //si l'article à d'autre(s) page(s) alors...
{
// echo 'Nombre de page: '.count($id_nbrpage).'<br/>';
foreach($id_nbrpage AS $id_nbrpage2)//... pour chaque page, on l'ouvre et cherche la news
{
$url = "http://content.chinasspp.com/News/Detail/".$date_news."/".$id_nbrpage2.".htm";
// echo $url.'<br/>';
$content = file_get_contents($url);
// On cherche la suite de la news que l'on va concaténer avec le début de la news
eregi('<table width="600" height="58" border="0" cellpadding="0" cellspacing="0">(.*)<td height="24" align="center" valign="top" class="text11" style="padding-left:30px;padding-right:30px;padding-top:5px;letter-spacing:1px;line-height:18px; height:auto;border-top:#cdcdcd 1px dotted"><span class="small_title">', $content, $news_suite);
$news_suite = $news_suite[1];
$news .= $news_suite;
}
}
//on change le jeu de caractère de la chaine pour que le navigateur affiche correctement le texte.
$news = iconv('gb2312','UTF-8', $news);
//On enlève des info en fin d'article qui nous interesse pas
$news = str_replace('border=0','', $news);
preg_match_all('|<td height="25" align="center" valign="middle" class="small_title">.*?<br><br><\/td>|',$news, $var_del);
$news = str_replace($var_del[0],'', $news);
preg_match_all('|<td height="24" valign="top".*?</a></span></td>|',$news, $var_del2);
$news = str_replace($var_del2[0],'', $news);
//on enlève toutes les balises sauf <img>
$news = (strip_tags($news, '<img>'));
$news = str_replace(' ','',$news);
$news = '<p style="text-align: justify;">'.$news.'</p>';
$news = addslashes($news);
$titre_news = addslashes($titre_news);
$resume_news = addslashes($resume_news);
//Allez maintenant occupons nous des images.
preg_match_all('|http://(...).com/News/pic/([0-9]+)\.(.{3})|',$news,$tab_image_news);
$nbr_image = count($tab_image_news[0]);
if ($nbr_image != 0)
{
create_dir('...:/.../.../.../image/'.$date_news_test.'/');
for ($i = 0; $i < $nbr_image ; $i++)
{
resizeImg($tab_image_news[0][$i], 500, 5000, $tab_image_news[1][$i], 'C.../.../.../.../image/'.$date_news_test.'/');
$news = str_replace($tab_image_news[0][$i],'...:/.../.../.../image/'.$date_news_test.'/'.$tab_image_news[1][$i],$news);
}
}
echo'<pre>';
print_r($news);
echo'<pre/>';
$reponse = mysql_query("INSERT INTO news (id, titre, resume, texte) VALUES ('','".$titre_news."','".$resume_news."','".$news."' )");
echo mysql_error($link) ;
}
}
?> |
Partager