Парсер товаров и изображений с сайта магазина Forum

Тем, кто задумал делать интернет магазин, а товары заполнять ручками лень, вот, пожалуйста:

<?php
if (!session_id()) session_start();
if (isset($_GET['kill_ses']))kill_ses();

$db=new mysqli('localhost','root','');

$data_arr=array();

if (!$_SESSION['data_arr']){
if (!is_file("CatalogFull.csv")) die('Have not file!');
$fp=fopen("CatalogFull.csv","r");
$head=fgetcsv($fp,'null',';');
while (($line=fgetcsv($fp,1024,';')) !==false){
$data_arr[]=$line;
}
fclose($fp);
$_SESSION['data_arr']=$data_arr;
$_SESSION['is_new_start']=true;
}else{
$data_arr=$_SESSION['data_arr'];
$_SESSION['is_new_start']=false;
}

$db->select_db('shop');
$db->query("SET NAMES CP1251");
$db->query("SET COLLATION_CONNECTION=CP1251_GENERAL_CI");

if (!$_SESSION['parsed']){
$res=$db->query("select art from catalog where parsed=1");
$_SESSION['parsed']=array();
while ($row=$res->fetch_object()){
$_SESSION['parsed'][]=$row->art;
}
}

$cnt=0;

foreach ($data_arr as $arr){
if ($cnt==0) echo "First: ".$arr[12]."<br>";
if (!in_array($arr[12],$_SESSION['parsed']) and ($arr[12]<>"")){
$img=null;
$desc=null;
$forum=file_get_contents("http://www.forum3.ru/?cmd=show_tovar&code=".$arr[12]);
preg_match_all('#<a class="fancybox_tovar_galery" tovarcode="'.$arr[12].'"><img src="(.+?)"#is', $forum, $data);
if (!empty($data[1])){
$img=$data[1][0];
}
if ($img){
$ext=explode('.',$img);
file_put_contents("images/".$arr[12].".".$ext[count($ext)-1],file_get_contents($img));
}
$forum=str_replace('class="characteristicBox"','class="desc"',$forum);
$data=null;
preg_match_all('#<!--characteristicBox-->(.+?)<!--/characteristicBox-->#is', $forum, $data);
if (!empty($data[1])){
$desc=$data[1][0];
}
if ($img or $desc) echo $arr[12].' Found!<br>';
if ($img){
$img=$arr[12].".".$ext[count($ext)-1];
}else{
$img='';
}
$desc=str_replace("'","",$desc);
$arr[13]=str_replace("'","",$arr[13]);
$added=time();
$desc=str_replace("\n","",$desc);
$desc=str_replace("\r\n","",$desc);
$desc=str_replace(chr(13),"",$desc);
$desc=preg_replace('~style="[^"]*"~i', '', $desc);
$desc=str_replace(";",".",$desc);
//$desc=str_replace('"',"'",$desc);
$desc=str_replace('<li />',"",$desc);
$desc=str_replace('&nbsp.','',$desc);
$arr[13]=str_replace("®",'',$arr[13]);
$arr[13]=str_replace("™",'',$arr[13]);
$sql=sprintf("INSERT INTO `shop`.`catalog` (`ID_Tovar`, `ID_Kategor`, `NameKat0`, `NameKat1`, `NameKat2`, `NameKat3`, `NameKat4`, `NameKat5`, `Art`, `Tovar`, `Price_1`, `Currency1`, `Garant`, `Sklad`, `description`, `image`,`parsed`,`added`) VALUES ('%d', '%d', '%s', '%s', '%s', '%s', '%s', '%s', '%d', '%s', '%d', '%s', '%s', '%d', '%s', '%s','1',%d)",
$arr[0],$arr[1],$arr[2],$arr[3],$arr[4],$arr[5],$arr[6],$arr[7],$arr[12],$arr[13],$arr[16],$arr[17],$arr[25],$arr[30],$desc,$img,$added);
$db->query($sql);
if ($db->errno)die($db->error."<br>".$sql);
}

$cnt++;
array_shift($_SESSION['data_arr']);
if ($cnt>200){
echo "Last: ".$arr[12]."<br>";
echo "Array size:".count($_SESSION['data_arr']).".";
echo "<script>setTimeout(function() {location='".$_SERVER['PHP_SELF']."';}, 1000);</script>";
die();
}
}
kill_ses();
echo "Done!";
function kill_ses(){
unset($_SESSION['data_arr']);
unset($_SESSION['parsed']);
unset($_SESSION['symnames']);
unset($_SESSION['export_all']);
}
?>

Штуковина «как есть», работает исправно. Допилите под себя и получайте профит!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *