1. Этот сайт использует файлы cookie. Продолжая пользоваться данным сайтом, Вы соглашаетесь на использование нами Ваших файлов cookie. Узнать больше.
  2. Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!
    Скрыть объявление

Пресет Парсер dogpile.com 1.0

Демонстрация общего подхода к составлению кастомных парсеров на примере Dogpile

  1. Force68

    Force68 A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    25 фев 2013
    Сообщения:
    175
    Симпатии:
    49
    День добрый,
    Forbidden, помогите пожалуйста сделать парсет для парсинга ссылок
    по запросу с dogpile.com,
    с помощью Net::HTTP, что то не понимаю, как отфильтровать ссылки с выдачи,
    и сделать листинг страниц.
     
  2. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791
    [​IMG]


    Небольшое пояснение
    • В качестве Query format(Формат запроса) указываем http://www.dogpile.com/search/web?qsi=${pagenum}&q=${query}&fcop=results-bottom&fpid=2 - вместо ${pagenum} будет подставляться необходимый номер страницы, в ${query} будет подставляться наш запрос
    • Добавляем опцию Use pages, указываем начало с первой страницы, всего 100 страниц, с шагом в 10(1, 11, 21 и т.п.)
    • Добавляем опцию Parse custom result - основная часть составления парсера, здесь указываем регулярное выражение <div class="searchResult webResult">.*?<a class="resultTitle".*?ru=(.*?)&amp , выставляем флаги sg(s - точка включает в себя перенос строки, g - глобальный поиск, нам нужны все ссылки на страницы). Сохраняем результат в массив serp в элемент link - когда мы парсим несколько однотипных элементов(флаг g регулярного выражения) - мы сохраняем результат в массив, $1 означает первую группировку регулярного выражения
    • Теперь изменим Result format(Формат результата) - укажем $serp.format('$link\n') - вывести все элементы link массива serp через новую строку - в результате получим список всех ссылок
    • Добавим опцию Check next page - проверка на существование следующей страницы, укажем регулярное выражение <li class="paginationNext"> - если данное регулярные выражение не выполниться на текущей странице то парсинг завершиться
    В результате мы получим искомый список ссылок, за одним исключением - ему необходимо сделать uri decode, встроенной функции в парсере пока нет

    Код пресета(для импорта необходимо нажать на кнопку с синей стрелкой в Add Task):
     
    #2 Forbidden, 14 ноя 2013
    Последнее редактирование модератором: 15 апр 2015
  3. Force68

    Force68 A-Parser Enterprise License
    A-Parser Enterprise

    Регистрация:
    25 фев 2013
    Сообщения:
    175
    Симпатии:
    49
    Forbidden, спасибо большое за подробный ответ,
    теперь принцип понятен.
     
  4. Forbidden

    Forbidden Administrator
    Команда форума A-Parser Enterprise

    Регистрация:
    9 мар 2013
    Сообщения:
    3.336
    Симпатии:
    1.791

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