Вывести случайные значения внутри повторяющихся границ GETMORECYCLECONTENT

Тема в разделе "Решение различных задач по парсингу", создана пользователем Benjamin Coleman, 12 апр 2015.

  1. Benjamin Coleman

    Benjamin Coleman New Member Пользователи

    Регистрация:
    23 окт 2010
    Сообщения:
    152
    Привет всем! У меня появилась задача вывести случайное значение внутри повторяющихся границ. Я немного поковырялся и сейчас напишу вам ещё элементарное решение (я не нашел на форуме, может плохо искал, и напишу для те, кому оно может понадобится) ;)

    Суть в том что я парсил json, который подгружался через ajax и в этом json лежат комментарии (aliexpress.com). Ну это все просто:

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    И конечно же к каждому комментарию я хотел подставить случайно имя. Да вот незадача - CD через FILE_RANDOM дергает только один раз за страничку и вставляет одно и то же имя (строку то есть) к каждому комментарию. Хоть через VAR_F, хоть {такую|конструкцию|писать|ему}. Никак, хоть убей :)

    Решение простое. На локалхост кидаем файл rand.php:


    PHP:
    <?php
    $lines 
    file('names.txt');
    echo 
    '|'.$lines[array_rand($lines)].'|';
    ?>
    И вытягиваем значение, т.е. случайное имя через GETMORECONTENT внутри GETMORECYCLECONTENT. Только таким образом CD будет каждый раз дергать php скрипт при получении повторяющейся границы парсинга внутри GETMORECYCLECONTENT:

    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
     
  2. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Хорошее решение, но для генерации случайных символов есть макрос SKU.
    При использовании несколько раз в документе, всегда уникальное значение.
    Примкр использования (в стиле алиекспресс анонимных имен авторов) :
    3 раза использовав в шаблоне вывода, получаем случайные значения, например:
     
  3. Benjamin Coleman

    Benjamin Coleman New Member Пользователи

    Регистрация:
    23 окт 2010
    Сообщения:
    152
    Мне реальные имена нужны же.

    Да и не работает что-то мой метод в бою :( Только при предпросмотре срабатывал.
     
    Последнее редактирование: 12 апр 2015
  4. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Пару примеров php скриптов (любой) для вывода из текстового файла names.txt случайную строку
    PHP:
    <?php
    $arrirc 
    file('names.txt');
    echo 
    $arrirc[rand(0,(count($arrirc)-1))];
    ?>
    PHP:
    <?php 
    $txt 
    file('names.txt'); 
    $str $txtarray_rand($txt) ]; 
    unset(
    $txt); 
    echo 
    $str
    ?>
    PHP:
    <?php
    $arr 
    file('names.txt'); 
    print 
    $arrrandcount$arr ) - ) ];
    ?>
     
  5. Benjamin Coleman

    Benjamin Coleman New Member Пользователи

    Регистрация:
    23 окт 2010
    Сообщения:
    152
    Спасибо, но дело не в этом. CD кэширует данные, когда я дергаю [GETMORECYCLECONTENT] - в этом проблема, не желает он каждый при получении значения в каждой границе вставлять новое значение.

    Счас подумаю, как решить-то. Может потом обработать файл уже...
     
  6. kagorec

    kagorec Администратор Команда форума Администратор

    Регистрация:
    3 янв 2011
    Сообщения:
    4.432
    Адрес:
    Latvia
    Заметил что выводите GETMORENTCONTENT макросом, зря, потому как он оптимизирован для своих задачь (кеширование ускоряет работу, и меньше нагрузки).
    Но для скрипта используйте специальный макрос PHP_SCRIPT
    Код:
    <PHP_SCRIPT_5=http://localhost/rand.php>data=[DATAENCODE][/DATAENCODE]</PHP_SCRIPT_5>
     
  7. Benjamin Coleman

    Benjamin Coleman New Member Пользователи

    Регистрация:
    23 окт 2010
    Сообщения:
    152
    Изначально комментариев нет на странице товара. Они подгружаются через ajax - возвращают json - там массив комментариев. Чтобы получить адрес возращаемого json я должен распарсить страницу товара, получить ID и уже на основе ID получаю json с комментами. Так что ничего не зря :)

    Вот
    Скрытое содержимое:
    **Скрытое содержимое: доступно при наличии 1 постов.**
    . Причем просто их - комменты - пропарсить поодиночке тоже не получится, там нет наименования продукта :)

    Пишу постобработчик для вставки имен комментаторов. Похоже c CD не получится в моей ситуации сделать на лету…
     
    Последнее редактирование: 13 апр 2015
  8. Benjamin Coleman

    Benjamin Coleman New Member Пользователи

    Регистрация:
    23 окт 2010
    Сообщения:
    152
    В общем написал постобработчик результирующих комментов на javascript - добавляет к каждой строке случайное имя из большого массива:

    [​IMG]

    Под windows (все версии => Windows XP), это встроенная фича Windows Scripting Host - работает с js и vbs.

    Положить рядом с файлом incomments.txt, запустить :)
     

    Вложения:

    • addName.zip
      Размер файла:
      14,4 КБ
      Просмотров:
      8
Similar Threads
  1. videoinspector
    Ответов:
    3
    Просмотров:
    1.584
  2. chumaty
    Ответов:
    1
    Просмотров:
    1.300
  3. prah
    Ответов:
    2
    Просмотров:
    1.313
  4. dmitry__k
    Ответов:
    6
    Просмотров:
    1.796
  5. anton2
    Ответов:
    3
    Просмотров:
    1.114
Загрузка...

Поделиться этой страницей