[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выдирание изображений с сайта
Эли4ка
Уважаемые форумчане,прошу Вашего совета!Надо сделать скрипт чтобы он выдирал все изображения с сайта и складывал в какую-то папку.Реализовать это с CURL, верно?



Спустя 3 часа, 39 минут, 15 секунд (30.10.2011 - 09:52) T1grOK написал(а):
Да, CURL, мощная штука. Шлем http заголовки, типо мы "люди-человеки" получаем страницу. Потом с помощью регулярки разгребаем все это дело.

Спустя 38 минут, 19 секунд (30.10.2011 - 10:30) Эли4ка написал(а):
очень плохо понимаю регулярные выражения..это как реализовать??

Спустя 26 минут, 32 секунды (30.10.2011 - 10:57) m4a1fox написал(а):
Эли4ка
Ну насколько я понимаю...нужно написать такую регулярку, кот. читает только теги <img> берет их src подставляет имя сайта - получаем полный путь....и как-то sad.gif наверно из скачивает....

Спустя 16 минут, 11 секунд (30.10.2011 - 11:13) Эли4ка написал(а):
m4a1fox
спасибо попробую..

Спустя 3 минуты, 26 секунд (30.10.2011 - 11:16) m4a1fox написал(а):
Да не за что...
Когда сделаешь - поделишься? smile.gif

Спустя 14 минут, 29 секунд (30.10.2011 - 11:31) Эли4ка написал(а):
m4a1fox
да..если получится..

Спустя 25 минут (30.10.2011 - 11:56) T1grOK написал(а):
Я начинал изучать парсинг с этого примера.http://php5lab.com/blog59.html

Спустя 14 минут, 31 секунда (30.10.2011 - 12:10) Гость Дмитрий написал(а):
Зачем писать регулярки, если уже есть готовые решения?

HTML парсер на PHP

// Create DOM from URL or file
$html = file_get_html('http://www.google.com/');

// Find all images
foreach($html->find('img') as $element)
echo $element->src . '<br>';

Спустя 24 минуты, 34 секунды (30.10.2011 - 12:35) vital написал(а):
Вот вам парсер, к-й рекурсивно скачивает картинки с сайта. Не вашего, но суть понятна. Все что вам надо - подправить регулярку. Писал когда-то от нефиг делать.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<
html>
<
head>
<
meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<
title></title>
</
head>
<
body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 'On');
ini_set('max_execution_time',0);

function getImg($url) //ф-я которая будет скачивать картинку, ей передаем урл страницы
{
$ch = curl_init($url); //инициализируем курл с кучей разных настроек
curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Widows NT)');
curl_setopt($ch, CURLOPT_REFERER, 'google.com');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIESESSION, TRUE);
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_NOBODY, 0);
$res = curl_exec($ch); //вызываем

preg_match('#\<img alt\="Cyanide and Happiness, a daily webcomic" src\=\"([^\"]+)\>#', $res, $match); //здесь регулярка к-я ищет теги <img> в исходнике страницы.
/* у меня такой был только один, если у вас много то вам надо использовать preg_match_all, к-я вернет массив совпадений, после чего форич по нему*/
//Дальше проверяем есть ли совпадение(в случае прег_матч_олл этого не надо)

if (isset($match[1]))
{
$filename = 'comics/' . substr($match[1], strrpos($match[1], '/') + 1); //составляем им файла

if (!file_exists($filename)) //и если его не сущевствует
{
file_put_contents($filename, file_get_contents($match[1])); //сохраняем на диск
}
}

//здесь я искал ссылку на следующую страницу, вам это не нужно по идее
preg_match('#\<a rel\="prev" href\=\"/comics/([0-9]+)/\"\>< Previous\</a\>#', $res, $match);
if (isset($match[1]) && is_numeric($match[1]))
{
echo 'last:'. $match[1].'<br/>';
getImg('http://www.explosm.net/comics/'.$match[1].'/');
}
curl_close($ch);
}

getImg("http://www.explosm.net/comics/134/");
?>
</body>
</
html>

Спустя 23 минуты, 40 секунд (30.10.2011 - 12:59) killer8080 написал(а):
как вариант
$url = 'http://yandex.ru';
$content = file_get_contents($url);
preg_match_all('#<img.*src="(.+)".*>#isU', $content, $match);

echo '<pre>'.htmlspecialchars(print_r($match[1],1)).'</pre>';

Спустя 17 часов, 2 минуты, 10 секунд (31.10.2011 - 06:01) Эли4ка написал(а):
спасибо большое.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.