Реклама на сайте Advertise with us

Розыскивается скриптец

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 08.09.03
Сообщения: 627
Рейтинг: 654

Ссылка на сообщениеДобавлено: 14/06/12 в 13:25       Ответить с цитатойцитата 

В общем идея такова, точнее задача. Скрипт, локальный или серверный, который умеет из заданого набора domain.com|desc, выдрать все ссылки на большие картинки и записать это в файл форматом domain.com/im/1.jpg,domain.com/im/2.domain.com/im/3.jpg|decs.

Кто чего может подсказать, или может кто может написать ?
по сути, это простой парсер

Последний раз редактировалось: Starforce (14/06/12 в 14:46), всего редактировалось 1 раз

0
 



С нами с 10.07.09
Сообщения: 26
Рейтинг: 19

Ссылка на сообщениеДобавлено: 14/06/12 в 14:05       Ответить с цитатойцитата 

icon_cool.gif а шо тут подсказывать тут делать надо icon_smile.gif

0
 



С нами с 08.09.03
Сообщения: 627
Рейтинг: 654

Ссылка на сообщениеДобавлено: 14/06/12 в 14:07       Ответить с цитатойцитата 



дельцы то есть ? ))

0
 



С нами с 10.07.09
Сообщения: 26
Рейтинг: 19

Ссылка на сообщениеДобавлено: 14/06/12 в 14:10       Ответить с цитатойцитата 

icon_cool.gif тогда меня интересует 2 вопроса:
1.время(сроки)
2.деньги(на сколько ты готов раскошелиться)

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 14/06/12 в 14:29       Ответить с цитатойцитата 

А меня только один: формат исходных данных. icon_smile.gif

-2
 



С нами с 08.09.03
Сообщения: 627
Рейтинг: 654

Ссылка на сообщениеДобавлено: 14/06/12 в 14:38       Ответить с цитатойцитата 



формат же указан
задаем
domain.com|desc

получаем на выходе
domain.com/im/1.jpg,domain.com/im/2.domain.com/im/3.jpg|decs

0
 

Добрых Дел Мастер

С нами с 03.05.08
Сообщения: 3143
Рейтинг: 1227

Ссылка на сообщениеДобавлено: 14/06/12 в 15:04       Ответить с цитатойцитата 

непонятно.

короче есть файл. в формате:

domain1.com|desc (что за деск?)
...
domainN.com|desc


скрипт парсит файл. заходит на морду домена. выдергивает все картинки. складывает в файл в формате:

domain1.com/im/1.jpg,domain.com/im/2.domain.com/im/3.jpg|decs
...
domainN.com/im/1.jpg,domain.com/im/2.domain.com/im/3.jpg|decs

так?

пришел к победе коммунистического труда

0
 



С нами с 08.09.03
Сообщения: 627
Рейтинг: 654

Ссылка на сообщениеДобавлено: 14/06/12 в 15:17       Ответить с цитатойцитата 



все именно так, ничго не скачивается, выдираются только линки на большие пикчи
в данном случае это применяется к фхг

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 14/06/12 в 15:36       Ответить с цитатойцитата 

Starforce писал:
выдираются только линки на большие пикчи

Осталось выяснить как отличать большие картинки от всех остальных. icon_smile.gif

Примерно будет так:

Код: [развернуть]


Последний раз редактировалось: Yacc (14/06/12 в 17:05), всего редактировалось 1 раз

-1
 



С нами с 08.09.03
Сообщения: 627
Рейтинг: 654

Ссылка на сообщениеДобавлено: 14/06/12 в 15:41       Ответить с цитатойцитата 

Yacc писал:
Осталось выяснить как отличать большие картинки от всех остальных. icon_smile.gif

Примерно будет так:

Код:
function getHtml( $url, $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)' ) {
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_USERAGENT, $userAgent );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_FAILONERROR, true );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_TIMEOUT, 10 );
    $html = curl_exec($ch);
    if( $html !== false ) {
        return $html;
    }
    else {
        echo 'curl error:'.curl_error($ch);
        exit;
    }
}

function getHtmlAttr( $domain, $tag = 'img', $attr = 'src', $protocol = 'http://' ) {
    $html = getHtml( $protocol.$domain );
    $dom = new DOMDocument();
    @$dom->loadHTML( $html );
    $xpath = new DOMXPath( $dom );
    $images = $xpath->evaluate( '/html/body//'.$tag );
    $result = array();
    for( $i = 0; $i < $images->length; $i += 1 ) {
        $image = $images->item( $i );
        $src = $image->getAttribute( $attr );
        if( stripos( $src, 'http' ) !== 0 )
            $src = $protocol.$domain.$src;
        $result[] = $src;
    }
    return $result;
}

$data = file( 'data.txt' );
$result = array();
foreach( $data as $s ) {
    list( $domain, $desc ) = explode( '|', $s, 2 );
    $result[] = implode( '|', getHtmlAttr( $domain ) ).'|'.$desc;
}
file_put_contents( 'result.txt', $result );


картинки можно узнавать по коду если ответ ОК, то берем линк, праадв в этом случае наверное придетс яограничить размеры картинок, тчобы не соибрать мусор, ну либо знать как то иным способом, что это именно то, что нужно, наверное можно ссылку *.jpg сопоставлять ссылке на *.jpg

0
 

Люблю то, что делаю!

С нами с 22.10.06
Сообщения: 5053
Рейтинг: 4418


Передовик Master-X (16.12.2014) Передовик Master-X (16.02.2017) Передовик Master-X (01.03.2017) Передовик Master-X (16.03.2017) Передовик Master-X (01.09.2017) Ветеран трепа Master-X (16.09.2017)
Ссылка на сообщениеДобавлено: 14/06/12 в 16:23       Ответить с цитатойцитата 

Код: [развернуть]


У меня примерно такой фрагмент кода который отвечает за проверку на существование и минимальный размер.
Но я не особый знаток ПХП, тут есть хорошие спецы smail54.gif , они и мне помогали с вопросами.

0
 



С нами с 09.03.09
Сообщения: 6053
Рейтинг: 3538


Передовик Master-X (01.11.2009) Передовик Master-X (16.11.2009) Передовик Master-X (01.02.2011) Передовик Master-X (01.12.2011) Передовик Master-X (16.12.2011) Ветеран трепа Master-X (01.01.2014)
Ссылка на сообщениеДобавлено: 14/06/12 в 17:01       Ответить с цитатойцитата 

Код:
function getHtml( $url, $userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)' ) {
    $ch = curl_init();
    curl_setopt( $ch, CURLOPT_USERAGENT, $userAgent );
    curl_setopt( $ch, CURLOPT_URL, $url );
    curl_setopt( $ch, CURLOPT_FAILONERROR, true );
    curl_setopt( $ch, CURLOPT_FOLLOWLOCATION, true );
    curl_setopt( $ch, CURLOPT_AUTOREFERER, true );
    curl_setopt( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt( $ch, CURLOPT_TIMEOUT, 10 );
    $html = curl_exec($ch);
    if( $html !== false ) {
        return $html;
    }
    else {
        echo 'curl error:'.curl_error($ch);
        exit;
    }
}

function getHtmlAttr( $domain, $tag = 'a/img/..', $attr = 'href', $protocol = 'http://' ) {
    $domain = preg_replace( '#\?.+$#', '', $domain );
    $html = getHtml( $protocol.$domain );
    $dom = new DOMDocument();
    @$dom->loadHTML( $html );
    $xpath = new DOMXPath( $dom );
    $links = $xpath->evaluate( '/html/body//'.$tag );
    $result = array();
    for( $i = 0; $i < $links->length; $i += 1 ) {
        $link = $links->item( $i );
        $href = $link->getAttribute( $attr );
        if( stripos( $href, '.jpg' ) === ( strlen( $href ) - 4 ) ) {
            if( stripos( $href, 'http' ) !== 0 )
                $href = $protocol.$domain.$href;
            $result[] = $href;
        }
    }
    return $result;
}

$data = file( 'data.txt' );
$result = array();
foreach( $data as $s ) {
    list( $domain, $desc ) = explode( '|', $s, 2 );
    $result[] = implode( '|', getHtmlAttr( $domain ) ).'|'.$desc;
}
file_put_contents( 'result.txt', $result );


Работать будет только стандартных галях типа

promo.averotica.com/gals/20120425-1692-alice/?wm=xxxxxxx
picture6.18stream.com/tb/379/h/10/?nats=xxxxxxxxxx

Последний раз редактировалось: Yacc (14/06/12 в 17:33), всего редактировалось 1 раз

-2
 



С нами с 10.07.09
Сообщения: 26
Рейтинг: 19

Ссылка на сообщениеДобавлено: 14/06/12 в 17:01       Ответить с цитатойцитата 

icon_smile.gif а зачем
$images = $xpath->evaluate( '/html/body//'.$tag );

не проще $elements = $this->_xpath->query("//*/a/@href");
итого получите ВСЕ href на страничке

и еще хорошо бы не только от гугла и иметь массив имен браузеров и рандомно выбирать на 1 соединение кого-то из них

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »