Dismiss Notice
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Помогите доделать парс. очень нужно.

Discussion in 'Свободное общение' started by igrovik, Jan 27, 2017.

27.01.17 в 20:23
03.02.17 в 00:38
20
1,176
0
  1. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Все подробности внизу:

    <?php
    /*
    Грабим верх Название и качество фильма
    */
    //откуда будем парсить информацию
    $u = 'http://блабла.com/491502-golos-monstra-a-monster-calls-2016-dvdscr';
    $content = file_get_contents($u);

    // Определяем позицию строки, до которой нужно все отрезать
    $pos = strpos($content, '<div class="fr_viewn_t_in"><h1>');

    //Отрезаем все, что идет до нужной нам позиции
    $content = substr($content, $pos);

    // Точно таким же образом находим позицию конечной строки
    $pos = strpos($content, '</div>');

    // Отрезаем нужное количество символов от нулевого
    $content = substr($content, 0, $pos);

    //если в тексте встречается текст, который нам не нужен, вырезаем его
    $content = str_replace('','', $content);

    // выводим спарсенный текст.
    echo $content;

    ?>
    ПАРС БУДЕТ ИСПОЛЬЗОВАТЬСЯ НА ЛОКАЛЬНОЙ МАШИНЕ!ПАРС БУДЕТ СОСТОЯТЬ С 1 страницы. index.php
    Суть того что мне нужно, но никак не могу добится этого!
    Короче:
    1) как втулить чтобы при входе на страницу парса (index.php) высвечивалось окно добавления, в которое я бы мог ввести адрес страницы для парсинга и кнопочка старт.
    2) Парс выводит мне инфу так:
    Наименование:
    Оригинальное наименование:
    Категория:
    Произведено:
    Режиссер постановщик:
    В главных ролях:
    Краткое описание:

    А нужно так:

    Название:
    Оригинальное название:
    Жанр:
    Страна:
    Режиссер:
    В ролях:
    О фильме:
    Так вот второй вопрос как сделать чтобы менялось к примеру с Наименование на Название??
    Те кто понял чего я хочу помогите плиз.
    Всем заранее СПАСИБО.
     
  2. Teodor

    Teodor Зелёный

    Messages:
    3
    Likes Received:
    6
    Best Answers:
    0
    Скинь в личку целевой URL для тестирования.
     
  3. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Проблема решена. Иным кодом. Вот только не могу додумать, как воплотить такое чтобы было окно куда можно добавить ссылку, и после нажатия старт чтобы скрипт после обработки вывел результат без внесения в базу а просто на экран. Просто каждый раз приходится открывать файл для того чтобы вставить новую ссылку.
     
    Last edited: Jan 28, 2017
  4. Teodor

    Teodor Зелёный

    Messages:
    3
    Likes Received:
    6
    Best Answers:
    0
    Из самого простого — вставь вместо $u = "ссылка"; следующую строку: $u = $_GET['url']; и обращайся к этому скрипту через форму, в action которой будет стоять ссылка на скрипт, в method будет "get", а в параметре name у твоего input — "url".
     
    • Нравится Нравится x 1
  5. Bernard

    Bernard Забанен

    Messages:
    433
    Likes Received:
    129
    Best Answers:
    0
    Как у тебя 0 сообщений? Ты реально ниндзя)
    1.JPG
     
    • Нравится Нравится x 1
  6. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Спасибо именно то что нужно. ОГРОМНОЕ СПАСИБО еще раз.
    P.S
    Вот что вышло:
    Code:
    <form action="" method="get">
      <input name="url" placeholder="Искать здесь..." type="search" required>
      <button type="submit">Поиск</button>
    </form>
    <?php
    /*
    Грабим верх Название и качество фильма
    */
    //откуда будем парсить информацию
    $content = file_get_contents($_GET['url']);
    
    // Определяем позицию строки, до которой нужно все отрезать
    $pos = strpos($content, '<b>Наименование:</b>');
    //Меняем названия на свои
    $content=str_replace('Наименование','Название',$content);
    $content=str_replace('Продолжительность:','Продолжительность:',$content);
    $content=str_replace('Произведено:','Страна:',$content);
    $content=str_replace('Категория:','Жанр:',$content);
    $content=str_replace('постановщик','',$content);
    $content=str_replace('главных','',$content);
    $content=str_replace('Краткое описание:','О фильме:',$content);
    
    //Режим хлам
    $content=preg_replace('|<b>Есть реклама</b>(.*?)<!--/noindex-->|is','',$content);
    $content=preg_replace('|<!--noindex--><b>Видео данные:</b>(.*?)<br />|is','',$content);
    $content=preg_replace('|<b>Аудио данные:</b>(.*?)<br />|is','',$content);
    $content=preg_replace('|<li class="fr_one">(.*?)</li>|is','',$content);
    $content=preg_replace('|<li class="fr_two">(.*?)</li>|is','',$content);
    $content=preg_replace('|<li class="fr_three">(.*?)</li>|is','',$content);
    //Отрезаем все, что идет до нужной нам позиции
    $content = substr($content, $pos);
    
    // Точно таким же образом находим позицию конечной строки
    $pos = strpos($content, '</li></ul>');
    
    // Отрезаем нужное количество символов от нулевого
    $content = substr($content, 0, $pos);
    
    //если в тексте встречается текст, который нам не нужен, вырезаем его
    $content=str_replace('наименование','название',$content);
    // выводим спарсенный текст.
    echo $content;
    
    ?>
    
    Вот если бы можно было бы это менять между собой местами:
    Вместо:
    $content=str_replace('Наименование','Название',$content);
    $content=str_replace('Продолжительность:','Продолжительность:',$content);

    Чтобы было так:
    $content=str_replace('Продолжительность:','Продолжительность:',$content);
    $content=str_replace('Наименование','Название',$content);

    Но такое навряд ли возможно.Или можно как-то? Если можно подскажи как, заранее спасибо.
     
    Last edited: Jan 29, 2017
  7. PunPun

    PunPun VIP Кинотрафик v2

    Messages:
    7,397
    Likes Received:
    3,664
    Best Answers:
    32
    Можно. Записываешь данные в массив как надо, а потом implode(массив) в переменую. Но тут уже нужно использовать регулярку.
     
  8. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Спасибо. Но так как я в этом ноль то после прочтения такое ощущение что в лес попал а выхода не найду:D. А можно как-то поподробнее???Либо пример. А лучше если можно готовое решение показать?:D
     
  9. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Просьба к модераторам или к @ZerocooL закрыть тему решение найдено. Человечек один помог объяснением!Всем кто помогал чем мог, большое спасибо!!!!
     
  10. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
  11. aeneas

    aeneas Забанен

    Messages:
    11,489
    Likes Received:
    3,825
    Best Answers:
    10
    не могу понять зачем тебе все это )
     
  12. shevket007

    shevket007 Местный

    Messages:
    1,612
    Likes Received:
    509
    Best Answers:
    0
    Так как я понял парсер парсит с конкретного ресурса
     
  13. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Для облегчения той работы о которой тебе говорил:) для копипаста:)
     
  14. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Да ты правильно понял.Но если произвести некоторые манипуляции то можно подогнать под любой сайт.
     
  15. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Предупреждение: Кто будет смотреть видео, отключайте звук либо делайте тише, какого-то черта идет жуткий шум.
    Итак произвел некоторые изменения в своем творении.

    Вот как было --->
    [​IMG]
    Вот как стало ---> [​IMG]


    Еще бы решить проблемку чтобы была кнопка скачать скриншоты, было бы вообще супер. Если кто знает как это реализовать плиз поделитесь.
     
    Last edited: Feb 1, 2017
  16. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
  17. Teodor

    Teodor Зелёный

    Messages:
    3
    Likes Received:
    6
    Best Answers:
    0
    Там простейшая защита по referer, реализация зависит от твоего парсера, но можно сделать так:

    Code:
    <?php
      $curl = curl_init();
      curl_setopt($curl, CURLOPT_URL, 'http://freerutor.com/engine/download.php?id=210382');
      curl_setopt($curl, CURLOPT_REFERER, "http://freerutor.com/");
      curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
      $output = curl_exec($curl);
      print $output;
      curl_close($curl);
    ?>
    Принцип, думаю, понятен.
     
    • Нравится Нравится x 1
  18. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8
    Так как полный ноль в это то не очень, даже если быть честным то вообще не.
    Ну вот смотри вот так я беру ссылку:
    PHP:
    <?php
    $ssyl
    ='http://freerutor.com/491797-semeynoe-ograblenie-2017-camrip';
    $content file_get_contents($ssyl);

    // Определяем позицию строки, до которой нужно все отрезать
    $pos strpos($content'<div class="fr_skach">');
    //Режим мусор
    $content=str_replace('','',$content);

    //Отрезаем все, что идет до нужной нам позиции
    $content substr($content$pos);

    // Точно таким же образом находим позицию конечной строки
    $pos strpos($content'<div class="fr_kinkssp" id="video" >');

    // Отрезаем нужное количество символов от нулевого
    $content substr($content0$pos);

    //если в тексте встречается текст, который нам не нужен, вырезаем его
    $content=str_replace('/engine/download.php?id=','http://freerutor.com/engine/download.php?id=',$content);
    // выводим спарсенный текст.
    echo $content;
    ?>
    И как курл вкрутить туда?
    Пробовал так :

    PHP:
    <?php
    $ssyl
    ='http://freerutor.com/491797-semeynoe-ograblenie-2017-camrip';
    $content file_get_contents($ssyl);

    // Определяем позицию строки, до которой нужно все отрезать
    $pos strpos($content'<div class="fr_skach">');
    //Режим мусор
    $content=str_replace('','',$content);

    //Отрезаем все, что идет до нужной нам позиции
    $content substr($content$pos);

    // Точно таким же образом находим позицию конечной строки
    $pos strpos($content'<div class="fr_kinkssp" id="video" >');

    // Отрезаем нужное количество символов от нулевого
    $content substr($content0$pos);

    //если в тексте встречается текст, который нам не нужен, вырезаем его
    $content=str_replace('/engine/download.php?id=','http://freerutor.com/engine/download.php?id=',$content);
    // выводим спарсенный текст.
    echo $content;

      
    $curl curl_init();
      
    curl_setopt($curlCURLOPT_URL'$content');
      
    curl_setopt($curlCURLOPT_REFERER"http://freerutor.com/");
      
    curl_setopt($curlCURLOPT_RETURNTRANSFERtrue);
      
    $output curl_exec($curl);
      print 
    $output;
      
    curl_close($curl);
    ?>
    Не выводит ничего. Пробовал так: curl_setopt($curl, CURLOPT_URL, $content); тоже безрезультатно.
    А если напрямую в curl_setopt($curl, CURLOPT_URL, 'http://freerutor.com/engine/download.php?id=209973'); ставлю ссылку то на екране выводит какую-то ересть в виде иероглифов.
     
    Last edited: Feb 2, 2017
  19. Teodor

    Teodor Зелёный

    Messages:
    3
    Likes Received:
    6
    Best Answers:
    0
    Автору помог чем смог, здесь выложу простейшую реализацию скрипта скачивающего файл с подменой referer, код:
    Code:
    <?php
    
    function get_file($url, $referer) {
      $opts = array(
        'http' => array(
          'header' => array("Referer: $referer\r\n")
        )
      );
    
      print file_get_contents(
          $url,
          false,
          stream_context_create($opts)
      );
    }
    
    if(isset($_GET["get"])) {
      // Название файла, в данном случае берется id торрента из url, можно переделать под свои задачи
      $filename = parse_str(parse_url($_GET["get"], PHP_URL_QUERY), $filename_array);
      $filename = $filename_array['id'].".torrent";
    
      header("Content-Type: application/force-download");
      header('Content-Disposition: attachment; filename="'.$filename.'"');
      return get_file($_GET["get"], parse_url($_GET["get"], PHP_URL_HOST));
    }
    
    ?>
    Использовать так: создать файл с этим кодом и обращаться к нему через имяфайла.php?get=ссылка_на_файл
     
    • Нравится Нравится x 1
  20. TopicStarter Overlay
    igrovik

    igrovik Местный

    Messages:
    1,007
    Likes Received:
    292
    Best Answers:
    8