Вытягиваем рисунки со страницы сайта средствами php
Недавно писал как вытащить все ссылки с страницы теперь рассмотрим как вытащить картинки. Собственно оттого что мне было лень вручную копировать картинки с одной странички написал скриптик. Вообще лень помоему самый главный двигатель прогресса.
Итак что мы сначало делаем используя CURL скачиваем контент со страницы и вытягиваем из него все ссылки на картинки
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 | $url="http://irr.ru/"; //урл с которого тянем картинки function get_web_page( $url ) { $uagent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8"; $ch = curl_init( $url ); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // возвращает веб-страницу curl_setopt($ch, CURLOPT_REFERER,"http://google.com/"); curl_setopt($ch, CURLOPT_HEADER, 0); // не возвращает заголовки curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 10); // переходит по редиректам curl_setopt($ch, CURLOPT_ENCODING, ""); // обрабатывает все кодировки curl_setopt($ch, CURLOPT_USERAGENT, $uagent); // useragent curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); // таймаут соединения curl_setopt($ch, CURLOPT_TIMEOUT, 120); // таймаут ответа curl_setopt($ch, CURLOPT_MAXREDIRS, 10);// останавливаться после 10-ого редиректа curl_setopt($ch, CURLOPT_COOKIEFILE, $_SERVER['DOCUMENT_ROOT']."cookie.txt"); //curl_setopt($ch, CURLOPT_PROXY, $_SERVER['DOCUMENT_ROOT']."proxy.txt"); $content = curl_exec( $ch ); $err = curl_errno( $ch ); $errmsg = curl_error( $ch ); $header = curl_getinfo( $ch ); curl_close( $ch ); $header['errno'] = $err; $header['errmsg'] = $errmsg; $header['content'] = $content; return $header; } if(!is_dir("adsimg")){mkdir("adsimg");} $bi = 0; $result=get_web_page( $url ); while($bi < 10) { if($result == '') { echo "Ошибка соединения(1). Пробуем еще раз.<br>";flush();ob_flush();flush(); $result=get_web_page( $url ); $bi++; } else $bi = 20; } //print_r($result); $content = $result['content']; //-------------------------------------$photo----------------------------------------------------- preg_match_all('/img\/catalog\/icons\/.*?gif/i',$content,$foto); |
дальше по полученным ссылкам тянем картинки с сайта и складываем их себе в папочку.
1 2 3 4 5 6 7 8 9 10 11 12 13 | $page=count($foto[0]); for ($p=0;$p<$page;$p++){ $photo=str_replace('img','http://irr.ru/img',$foto[0][$p]); $url_img=trim($photo); echo "Тянем картинку ".$photo."<br>"; flush();ob_flush();flush(); $home_url_img=$_SERVER['DOCUMENT_ROOT']."/irru/adsimg/".basename($url_img); if (!file_exists($home_url_img)) { $image=file_get_contents($url_img); $fp=fopen($home_url_img,"w+"); fwrite($fp,$image); fclose($fp); } } |
ну и весь скрипт целиком даже глазом не успеем моргнуть, а картинки уже готовы для дальнейшего употребления.
Category: Изучаем PHP
[...] This post was mentioned on Twitter by phphub ru. phphub ru said: Вытягиваем рисунки со страницы сайта средствами php: Недавно писал как вытащить все ссылки с… http://goo.gl/fb/5sFtP [...]
Чет ошибка с preg_match_all
да поправил просто WP сам код поменял видимо теперь нормально должно быть
напиши на почту…есть работа