Dctv gривет! мне нужно парсить свои фотки из альбома: http://snakebcm.io.ua/album615386 Его нужно спарсить на сайт в листалку изображений. Не могу лишь сформировать чтение из всех страниц альбома. То-есть, чтобы парсились в одну страницу все фотки, что есть в альбоме. Это и всё. Помогите сделать. Спасибо.
Спасибо за отзыв и замечание. Мой код вот: Код (Text): <?php $get_url = "WTF"; if (isset($_GET['link'])) { $get_url = $_GET['link']; }//подставляемая ссылка ?link=http://perem137.io.ua/album615295 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $get_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $get_data = curl_exec($ch); if (empty($get_data)) { echo '<span style="color: red; font-size: 2em"><h1>Не вказано ID власника</h1></div> '; exit(); } $gd = $get_data; $rs1 = explode('<TITLE>',$gd); $gd = $rs1[1] ; $rs1 = explode('</TITLE>',$gd); $album = explode(":",$rs1[0]); echo $album[0]; $rs1 = explode('<TABLE cellpadding="1" cellspacing="0" width="100%" height="100%">',$get_data); if (empty($rs1[1])) { echo '<span style="color: red; font-size: 2em"><h5>Вкажіть посилання на альбом</h5></div> '; exit(); } $get_data = $rs1[1] ; $rs1 = explode('<TABLE align=\'center\' width=\'100%\'>',$get_data); $data = $rs1[0]; $data = preg_replace('<IMG src=\'http://i.io.ua/img/preview_2.gif\' width=\'14\' height=\'14\' border=\'0\' vspace=\'1\'>', '', $data); $data = preg_replace('<IMG src=\'http://i.io.ua/img/preview_3.gif\' width=\'14\' height=\'14\' border=\'0\' vspace=\'1\'>', '', $data); $data = preg_replace('<IMG src=\'http://i.io.ua/img/pic_next.ico\' border=\'0\' style=\'vertical-align:middle\'>', '', $data); $data = preg_replace('<IMG src=\'http://i.io.ua/img/pic_back_dis.ico\' style=\'vertical-align:middle\'>', '', $data); $data = preg_replace('<IMG src=\'http://i.io.ua/img/pic_back.ico\' border=\'0\' style=\'vertical-align:middle\'>', '', $data); $data = preg_replace('<IMG src=\'http://i.io.ua/img/pic_next_dis.ico\' style=\'vertical-align:middle\'>', '', $data); strip_tags($data, '<img>'); preg_match_all("#<IMG.*?src=\'(.*?)\'(.+?)>(.*?)#s",$data,$ok); for ($i=0; $i<count($ok[1]); $i++) { $thmb = $ok[0][$i]; $link = $ok[1][$i]; $big2 = preg_replace('/small/', 'large', $link); $big2 = preg_replace('/_0/', '', $big2); $big2 = preg_replace('/s/', 'g', $big2); $big1 = preg_replace('/small/', 'medium', $link); $big1 = preg_replace('/_0/', '', $big1); $big1 = preg_replace('/s/', 'm', $big1); $big3 = preg_replace('/small/', 'full', $link); $big3 = preg_replace('/_0/', '_f', $big3); $big3 = preg_replace('/s/', 'f', $big3); $id = substr($big1, -12,8); //$oid = substr($pieces2[0], 5); echo "<br><a href=".$big2.">".$thmb."</a> мініатюра ".$link." 800x600 ".$big1." 1200x900 ".$big2." 4000x3000 ".$big3." id ".$id; } ?> Только он парсит одну страницу. А мне нужно получить фото из всех страниц альбома. не соображу, как применить сканирование всех страниц альбома. Помогите мне в этом, пожалуйста.
Всегда пожалуйста Под вечер приходят 2 мысли 1) увеличиваем на 1 значение album615386_2? и парсим пока получаем ответ от сайта. 2) увеличиваем на 1 значение считываем этот пагинатор и смотрим есть ли продолжение.
В общем, нужно прогенерировать и проверить на существование ссылки, например, от /album615386 до /album615386_30. Еслм /album615386_31 уже не существует, то закончить генерацию и пропарсить изображения из каждой из страниц. Помогите пожалуйста, народ!
А ты раньше парсеры писал? Может попробовать регулярными выражениями? Самый простой способ: Если страниц нет то вместо картинок пишет <td> </td> тебе просто надо проверить там изображение img или  . Извини копать твой код мне не хочется попробуй сам, или во фриланс, напишут быстро и не дорого
Зря не копал. бльше понял бы.... strip_tags($data, '<img>'); Если бы я умел и знал, то точно не справшивал бы. Что знал то и сдлал. А тут нужно еще и страницы просканировать.
В общем то никто мне так и не помог с кодом... (парсить все страницы с фотками)... Сделал так: Код (Text): <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'http://snakebcm.io.ua/album616901_0'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $io_data = curl_exec($ch); $rs1 = explode('</TABLE></TD></TR><TR><TD align=\'center\' colspan=\'3\'>',$io_data); $io_data = $rs1[1] ; $rs1 = explode('</A></TD></TR></TABLE></TD></TR></TABLE><br>',$io_data); $io_links = $rs1[0]; preg_match_all("!<a[^>]+href=\"?'?([^ \"'>]+)\"?'?[^>]*>(.*?)</a>!is",$io_links,$ok); for ($i=0; $i<count($ok[1]); $i++) { $link_to_album = "http://snakebcm.io.ua/".$ok[1][$i]; $album_id_1 = explode("_", $ok[1][$i]); $a_id_1 = $album_id_1[1]; echo "<li>".$link_to_album." - ".$ok[2][$i]." - ".$a_id_1; } echo "<br>"; echo $album_id_1[0]; echo "<br>"; for ($i2 = 0; $i2 <= $album_id_1[1]; $i2++) { $link_to_albb = "http://snakebcm.io.ua/".$album_id_1[0]."_".$i2; echo "<br>".$link_to_albb." <b>numb..".$i2."</b><br>"; $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, $link_to_albb); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch2, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $io_album = curl_exec($ch2); $rs2 = explode('</TD></TR></TABLE><br>',$io_album); $io_album = $rs2[1] ; $rs2 = explode('<TR><TD align="center" id="pod"></TD></TR>',$io_album); $io_album = $rs2[0]; preg_match_all( '#<A href=\'(.*?)\' title=\'(.*?)\'.*?\'_blank\'><IMG src=\'(.*?)\'.*?\'text_color_serv\'>(.*?)<\/SPAN>.*?</DIV><br></TD>#is', $io_album, $io_album01); //echo strip_tags($io_album, '<img>') ; /**/ for ($i3=0; $i3<count($io_album01[1]); $i3++){ echo $io_album01[0][$i3]./**/" - ".$io_album01[1][$i3]." = ".$io_album01[2][$i3]." = ".$io_album01[3][$i3]." = ".$io_album01[4][$i3]." = ".$i3." <br> "; /**/ }} ?> Кто может знает как упростить - пишите...
Вижу, тишина как была, так и есть... В общем, могу честно сказать что сам практически всё вымучил... Код (Text): <meta http-equiv="content-type" content="text/html; charset=windows-1251"/> <script type="text/javascript" src="http://s51.ucoz.net/src/jquery-1.7.2.js"></script> <style type="text/css" media="all"> .loading_fon { position: fixed; top: 0; bottom: 0; right: 0; left: 0; z-index: 100; cursor: zoom-out; cursor: -moz-zoom-out; cursor: -webkit-zoom-out; background: rgba(0, 0, 0, 0.7); text-align: right; font-size: 200%; padding-right: 7px; text-decoration: none; color: #cccccc; display: none;} </style> <?php set_time_limit(200); //або ini_set('max_execution_time', 100); ?> <div class="loading_fon" id="loading_fon"> <div id="loading" style="z-index:4;border:2px solid #9b9b9b;background:#f00000;opacity: 0.7; -moz-border-radius:4px;border-radius:4px;-webkit-border-radius:4px;display:none;margin:5px;font-family:tahoma;font-size:10pt;position:fixed;top:35%;left:42%;padding:12px;"><center>Час виконання:<?php echo ini_get('max_execution_time'); ?> сек.<br><img src="http://www.mega-gold.org/Dobav/loading.gif"><br><small style="color:#fff;">Йде завантаження даних</small><br>Зачекайте, будьласка...</center></div></div> <script>$('#loading').fadeIn(1000);$('#loading_fon').fadeIn(800);</script> <?php $get_url = "0"; if (isset($_GET['link'])) { $get_url = $_GET['link']; } $link = explode("/", $get_url); if (empty($link[3])) { // 0: Якщо не вказано посилання на альбом. за цим слідкує змінна $link. echo "Помилка! Не вказано або невірно вказано посилання на альбом."; ?><form action="" method="get"><br> Приклад посилання: <input type="text" name="link" size="35" value="http://snakebcm.io.ua/album616901"> <input type="submit" value="Переглянути приклад"> </form><?php }else{ $album_number = substr($link[3],-6); echo "Сайт: ".$link[2].", Альбом номер: ".$album_number.". <a href=\"{$get_url}\"><b>Повне посилання в альбом</b></a> <br>"; /*$site = 'http://snakebcm.io.ua'; $album='album616901'; ?link=http://kra-kharkovget.io.ua/album625841_1 */ $site = $link[2]; //$album='album625841'; /02.php?link=http://kra-kharkovget.io.ua/album637450 $album=$link[3]; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $site.'/'.$album); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $io_data = curl_exec($ch); $rs1 = explode('</TABLE></TD></TR><TR><TD align=\'center\' colspan=\'3\'>',$io_data); if (empty($rs1[1])) { // 1: Якщо це одна сторінка без навігації. $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, $site.'/'.$album); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch2, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $io_album = curl_exec($ch2); $rs2 = explode('</TD></TR></TABLE><br>',$io_album); $io_album = $rs2[1] ; $rs2 = explode('</b></SPAN>',$io_album); $io_album = $rs2[0]; preg_match_all('#<TD.*?<A href=\'(.*?)\'.*?<IMG src=\'(.*?)\' style=\'.*?\'>.*?<SPAN.*?\'>(.*?)<\/SPAN>.*?<DIV .*?\'>(.*?)</DIV>.*?<br>#is', $io_album, $io_album01); for ($i3 = 0; $i3<count($io_album01[1]); $i3++) { $ch3 = curl_init(); curl_setopt($ch3, CURLOPT_URL, $io_album01[1][$i3]); curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch3, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $sub_alb_m = curl_exec($ch3); $rs3 = explode('id=\'mainfoto\' src=\'',$sub_alb_m); if (empty($rs3[1])) { echo "Errr<br>"; for ($i3=0; $i3<count($io_album01[1]); $i3++) { $ch1 = curl_init(); curl_setopt($ch1, CURLOPT_URL, $get_url); curl_setopt($ch1, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch1, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $io_album1 = curl_exec($ch1); preg_match_all('#small_pic_src=\'(.*?)\';#is', $io_album1, $small_pic);//отримуємо мініатюрку. for ($i0=0; $i0<count($small_pic[1]); $i0++) { $small = $small_pic[1][$i0]; } /* $rs3 = explode('<TR align="center">',$io_album1); // шукаємо інші розмірию $io_album1 = $rs3[1] ; $rs3 = explode('</TR>',$io_album1); $oth_szs = $rs3[0]; preg_match_all("!<a[^>]+href=\"?'?([^ \"'>]+)\"?'?[^>]*>(.*?)</a>!is",$oth_szs,$osz); for ($i1=0; $i1<count($osz[1]); $i1++) { //echo $site.$osz[1][$i1]."<br>"; $ch3 = curl_init(); curl_setopt($ch3, CURLOPT_URL, $site.$osz[1][$i1]); curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch3, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $sub_alb_m = curl_exec($ch3); $rs3 = explode('id=\'mainfoto\' src=\'',$sub_alb_m); $sub_alb_m = $rs3[1] ; $rs3 = explode('\' style=\'border',$sub_alb_m); $sub_alb_m= $rs3[0]; } */ $rs4 = explode('id=\'mainfoto\' src=\'',$io_album1); $io_album1 = $rs4[1] ; $rs4 = explode('\' style=\'border',$io_album1); $large = $rs4[0]; $tags = get_meta_tags($get_url); echo"<br><small>".$get_url." = ".$small." <IMG src='".$small."'> = ".$large."=".$tags['description']."</small><br>"; } } else {// $sub_alb_m = $rs3[1] ; $rs3 = explode('\' style=\'border',$sub_alb_m); $sub_alb_m= $rs3[0]; $sub_alb_g = str_replace("m.","g.",$sub_alb_m); $sub_alb_g = str_replace("medium","large",$sub_alb_m); $id = explode("/", $io_album01[1][$i3]);// Робимо ідентифікатор $ident = substr($id[3],0,-1); echo "<small>".$io_album01[1][$i3]." = ".$ident." = ".$io_album01[2][$i3]." = ".$io_album01[3][$i3]." =<SPAN style='color: #ff8800'>".$io_album01[4][$i3]."</SPAN> = ".$sub_alb_m." = ".$sub_alb_g." = ".$i3 ."</small><br>"; /**/ }} } else {// 2: Якщо на сторінці небагато фоток або 18. $io_data = $rs1[1] ; $rs1 = explode('</A></TD></TR></TABLE></TD></TR></TABLE><br>',$io_data); $io_links = $rs1[0]; preg_match_all("!<a[^>]+href=\"?'?([^ \"'>]+)\"?'?[^>]*>(.*?)</a>!is",$io_links,$ok); for ($i=0; $i<count($ok[1]); $i++) { $link_to_album = $site."/".$ok[1][$i]; $album_id_1 = explode("_", $ok[1][$i]); } if (empty($album_id_1[1])) { // 2: Якщо остання сторінка з одною фоткою. //echo "<br>"; $ch4 = curl_init(); curl_setopt($ch4, CURLOPT_URL, $site.'/'.$album); curl_setopt($ch4, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch4, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $sub_alb_4 = curl_exec($ch4); $rs4 = explode('</TR></TABLE></TD></TR></TABLE><br>',$sub_alb_4); $sub_alb_4 = $rs4[1] ; $rs4 = explode('</b></SPAN>',$sub_alb_4); $sub_alb_4= $rs4[0]; preg_match_all('#<TD.*?><A href=\'(.*?)\'.*?><IMG src=\'(.*?)\' style=\'.*?\'>.*?<SPAN.*?\'>(.*?)<\/SPAN>.*?<DIV .*?\'>(.*?)</DIV>.*?<br>#is', $sub_alb_4, $io_album01); for ($i3=0; $i3<count($io_album01[1]); $i3++){ $ch3 = curl_init(); curl_setopt($ch3, CURLOPT_URL, $io_album01[1][$i3]); curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch3, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $sub_alb_m = curl_exec($ch3); $rs3 = explode('id=\'mainfoto\' src=\'',$sub_alb_m); $sub_alb_m = $rs3[1] ; $rs3 = explode('\' style=\'border',$sub_alb_m); $sub_alb_m= $rs3[0]; $sub_alb_g = str_replace("m.","g.",$sub_alb_m); $sub_alb_g = str_replace("medium","large",$sub_alb_m); $id = explode("/", $io_album01[1][$i3]);// Робимо ідентифікатор $ident = substr($id[3],0,-1); echo "<small>".$io_album01[1][$i3]." = ".$ident." = ".$io_album01[2][$i3]." = ".$io_album01[3][$i3]." =<SPAN style='color: #ff8800'>".$io_album01[4][$i3]."</SPAN> = ".$sub_alb_m." = ".$sub_alb_g." = ".$i3 ."</small><br>"; } } else {// 3: Якщо Все стандартно і є декілька (Багато) сторінок з фотками. //echo "<br>".$album_id_1[0]; for ($i2 = 0; $i2 <= $album_id_1[1]; $i2++) { $link_to_albb = $site."/".$album_id_1[0]."_".$i2; //echo "<br><SPAN style='color: #ff0000'>".$link_to_albb." <b>numb..".$i2."</b></SPAN><br>"; $ch2 = curl_init(); curl_setopt($ch2, CURLOPT_URL, $link_to_albb); curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch2, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $io_album = curl_exec($ch2); $rs2 = explode('</TD></TR></TABLE><br>',$io_album); $io_album = $rs2[1] ; $rs2 = explode('</b></SPAN>',$io_album); $io_album = $rs2[0]; preg_match_all('#<TD.*?<A href=\'(.*?)\'.*?<IMG src=\'(.*?)\' style=\'.*?\'>.*?<SPAN.*?\'>(.*?)<\/SPAN>.*?<DIV .*?\'>(.*?)</DIV>.*?<br>#is', $io_album, $io_album01); //echo strip_tags($io_album, '<img>') ; /**/ for ($i3=0; $i3<count($io_album01[1]); $i3++){ $ch3 = curl_init(); curl_setopt($ch3, CURLOPT_URL, $io_album01[1][$i3]); curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch3, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']); $sub_alb_m = curl_exec($ch3); $rs3 = explode('id=\'mainfoto\' src=\'',$sub_alb_m); $sub_alb_m = $rs3[1] ; $rs3 = explode('\' style=\'border',$sub_alb_m); $sub_alb_m= $rs3[0]; $sub_alb_g = str_replace("m.","g.",$sub_alb_m); $sub_alb_g = str_replace("medium","large",$sub_alb_m); $id = explode("/", $io_album01[1][$i3]);// Робимо ідентифікатор $ident = substr($id[3],0,-1); //echo"<small>".$io_album01[1][$i3]." = ".$ident." = ".$io_album01[2][$i3]." = ".$io_album01[3][$i3]." = <SPAN style='color: #ff8800'>".$io_album01[4][$i3]."</SPAN> = ".$sub_alb_m." = ".$sub_alb_g." = ".$i3 ."</small><br>"; } for ($i3=0; $i3<count($io_album01[1]); $i3++){ echo"<small>".$io_album01[1][$i3]." = ".$ident." = <IMG src='".$io_album01[2][$i3]."'> = ".$io_album01[3][$i3]." = <SPAN style='color: #f00000'>".$io_album01[4][$i3]."</SPAN> = ".$sub_alb_m." = ".$sub_alb_g." = ".$i3 ."</small><br>"; }} // Рахівничка альбомів // /*for ($i2 = 0; $i2 <= $album_id_1[1]; $i2++) { $link_to_albb = $site."/".$album_id_1[0]."_".$i2; echo "<small>".$link_to_albb." <SPAN style='color:green'><b>numb ".$i2."</b></SPAN></small><br>"; }*/ } }} ?> <script>$('#loading').fadeOut(1600);$('#loading_fon').fadeOut(1400);</script> <?php /* foreach ($link as $value) { ECHO$value."<BR>"; } */ // удаляем несколько переменных unset($get_url, $io_album01); exit; ?> Парсер изображений из альбомов io.ua такой вот с выводос всех фоток, имеющихся в альбоме. Так как там несколько вариантов парса, в зависимости от налачия или отсутствия искомого кода, то и вариантов парсинга там несколько... Вот только мне нужно теперь даные , выводимые в цикле вывести за пределы циклов, чтобы каждую переменную (например изображение) впихнуть в определённое место в ява-скрипте. То-есть, цикл с параметрами для вывода каждого размера фото должен быть для каждого размера индивидуален. А точнее - как организовать составление списка изображений уже за пределами парсинга фоток?
Для парсинга есть ещё вот такие штуки: http://habrahabr.ru/post/114143/ http://habrahabr.ru/post/69149/ хз, есть ли чего посвежее на эту тему, но скрипты вполне рабочие.
romach, мне и с этой штукой никто не помог ( А как сделать проыерку на привязку, чтобы пропускались только адреса с доменом io.ua ? Например, http://пользователь.io.ua/альбом, io.ua/ссылка, или же выдать ошибку.