[Ищу] Нужен актуальный парсер яндекс каталога (YACA)

Тема в разделе "SEO Скрипты", создана пользователем jabbaxatt, 26 июл 2011.

  1. jabbaxatt

    jabbaxatt Добрый модератор

    Moderator
    Регистр.:
    21 янв 2009
    Сообщения:
    882
    Симпатии:
    414
    Ищю нормально работающий парсер яндекс каталога.
    Работать должен так: я указываю категорию, например
    http:// yaca.yandex.ru/yca/cat/Portals/
    Он мне выдает список сайтов которые есть в этой категории в текущем порядке т.е
    www. kharkov.ua
    www. tut.by и т.д.

    Парсеры PDA - отстой ибо сама PDA версия каталога - отстой и плохо обновляется.
    Парсер yacaParser.exe от tic-history.ru работает некорректно (пропускает нечетные страницы начиная с 3-й, т.е пропускает половину сайтов, а другую половину парсит 2 раза)

    В гугле на первых страницах рабочего решения не нашел. Программа или скрипт - мне без разницы, - главное, чтоб работал.
     
  2. zzallexx

    zzallexx

    Регистр.:
    11 июн 2008
    Сообщения:
    1.036
    Симпатии:
    699
    свежак актуальней нету :)
    PHP:
    <?php
    //error_reporting(0);
    ini_set('max_execution_time',0);
    function 
    get_web_page$url,$prox=null )
    {
      
    $uagent "Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.8) Gecko/2009032609 Firefox/3.0.8";
    $cookie_file $_SERVER['DOCUMENT_ROOT'].'/cookie.txt';
      
    $ch curl_init$url );

      
    curl_setopt($chCURLOPT_RETURNTRANSFER1);  // возвращает веб-страницу
      
    curl_setopt($chCURLOPT_REFERER,"http://yandex.ru/");
      
    curl_setopt($chCURLOPT_HEADER0);           // не возвращает заголовки
      
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);   // переходит по редиректам
      
    curl_setopt($chCURLOPT_ENCODING"");        // обрабатывает все кодировки
      
    curl_setopt($chCURLOPT_USERAGENT$uagent);  // useragent
      
    curl_setopt($chCURLOPT_CONNECTTIMEOUT20); // таймаут соединения
      
    curl_setopt($chCURLOPT_TIMEOUT20);        // таймаут ответа
      
    curl_setopt($chCURLOPT_PROXY$prox);
      
    curl_setopt($chCURLOPT_COOKIEFILE$cookie_file);
      
    curl_setopt($chCURLOPT_COOKIEJAR$cookie_file);
      
    curl_setopt($chCURLOPT_MAXREDIRS10);       // останавливаться после 10-ого редиректа

      
    $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 (isset(
    $_POST['url'])){ $url trim($_POST['url']);
    if (isset(
    $_POST['proxy'])){ $proxy trim($_POST['proxy']); $proxy explode("\n",$proxy);}else{unset($proxy);}
    if (isset(
    $_POST['pause'])){ $pause trim($_POST['pause']);}else{$pause=0;}
    $file_name str_replace('http://yaca.yandex.ru/','',$url);
    $file_name str_replace('/','_',$file_name);
    $file_name $file_name.".txt";
    $file_name str_replace('_.','.',$file_name);
    $fp fopen($file_name,'w+');
    while(isset(
    $url)){
    if(isset(
    $proxy)){
    shuffle($proxy);
    $prox $proxy[0];  
    $result=get_web_page($url,$prox);
    }else{
    $result=get_web_page($url);}
    //print_r($result);
    $content $result['content'];
    preg_match_all('/<span class=\"b-result__url\">(.*?)<\/span>/i',$content,$match);
    foreach(
    $match[1]as$link){
    echo 
    $link."<br>"flush(); flush();
    fwrite($fp,$link."\n");}
    unset(
    $url);
    preg_match('/предыдущая.*?<\/span><span class=\"b-pager__active\"><a class=\"b-pager__next\" href=\"(.*?)\">следующая<\/a>/si',$content,$match);
    echo 
    $match[1]."<br>";
    if(isset(
    $match[1])) {$url "http://yaca.yandex.ru/".$match[1]; sleep($pause);}
    }
    fclose($fp);
    }
    else
    {
    echo 
    '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Парсер яндекс каталога</title></head>
    <body align="center">
    <h1>Парсер яндекс каталога</h1>
    <form action="'
    .$_SERVER['SCRIPT_NAME'].'" method="post" enctype="multipart/form-data" name="check" >
    <label>Вставьте урл в формате http://yaca.yandex.ru/yca/ungrp/cat/Computers/Computers/<br><br>
    <input name="url" type="text" size="90" value="http://yaca.yandex.ru/yca/ungrp/cat/Computers/Computers/"/><br><br>
    <p align="center">Задержка между парсингом страниц в секундах<input name="pause" size=5 value="5" type="text" /></p>
    <p align="center">Если хотите использовать прокси вставьте(каждый с новой строки)<br> 
    <textarea name="proxy" id="proxy" cols="70" rows="15"></textarea></p>
    <input name="submit" type="submit" value="Поехали" /></label></form><br></body></html>'
    ;
    }
     
    jabbaxatt нравится это.
  3. IamDevil

    IamDevil Капитан

    Регистр.:
    15 ноя 2009
    Сообщения:
    243
    Симпатии:
    56
    Вот еще полезный парсер:
    http://buzzman.ru/parser-yandeks-kataloga/
    Давно не обновлялся, но я только что проверил - результат есть!
     
  4. SHarksGANG

    SHarksGANG Создатель

    Регистр.:
    12 мар 2015
    Сообщения:
    30
    Симпатии:
    4
    Если осилить примерно на 20 % вот такую програмулину (Content Downloader) - будет счастье везде , даже на самом защищённом сайте
     
  5. Chance555

    Chance555

    Регистр.:
    2 сен 2006
    Сообщения:
    185
    Симпатии:
    20
    В A-parser встроен
     
  6. phoenix11

    phoenix11 Писатель

    Регистр.:
    19 авг 2013
    Сообщения:
    2
    Симпатии:
    0
  7. tarasov78

    tarasov78 Создатель

    Регистр.:
    21 окт 2010
    Сообщения:
    16
    Симпатии:
    1
    Поддерживаю Content Downloader способен спарсить все! стоит не дорого функций немерено.