Ссылки с пагинированных страниц не попадают в очередь

Тема в разделе "Сбор ссылок сканером сайтов", создана пользователем evgenij, 2 сен 2019.

  1. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    Ссылки на пагинацию генерировались яваскриптом - жаловался на проблему тут, но с первым этапом справился: теперь при предпросмотре яваскрипт кликает на пагинацию и грузит следующие пагинационные страницы (page=2page=n), пока пагинация не заканчивается. Пользовался схемой, указанной в видео Ссылки недоступны для гостей / Прокликивание страниц выдачи сайтов.

    Нынче же хочу сделать так, чтобы пагинированные страницы (Ссылки недоступны для гостей) добавлялись к очереди и с них снимались ссылки так же, как и со страниц без пагинации (Ссылки недоступны для гостей) .

    Думал, дело в таймауте, оказалось - нет. То есть в предпросмотре листалка страниц работает - а когда начинаю собирать ссылки, то в очереди оказываются только лишь страницы без пагинации. Пытался добавлять ?page= в управлении очередью, как на скриншоте
    [​IMG]
    - к сожалению, безрезультатно.
     
  2. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Мне кажется, вы не тем инструментом сбора ссылок пользуетесь.

    Вашу задачу можно решить при парсинге во вкладке "Ссылки".

    Ссылки недоступны для гостей
    Ссылки недоступны для гостей

    Если использовать сканер, он собирает ссылки из кода WEB-документа. Если ссылок в коде нет, то он их и не найдет.
     
  3. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    Свежая мысль! Попробую - доложу о результатах.
     
  4. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    Попробовал - работает. Но от этого метода придётся отказаться, чтобы не пугать донора.

    В УРЛ после номеров идёт читаемый слаг, типа /e/B41363957/hotel/berlin/hotel-wasilij-pupkin.html, который у каждого УРЛ уникальный. Если я создаю УРЛы типа Ссылки недоступны для гостей с помощью шаблона {num:1,1,99999999}, то я попадаю на страницу Ссылки недоступны для гостей через 301 редирект. Некоторое количество я, конечно, спарсить успею. Но когда донор заметит, что к нему ломятся исключительно через редиректы, то начнёт меня хитроумно банить. А вделать recaptcha v3 - это несложно, и накроется мой донор медным тазиком.

    Жаль - предложенный метод очень элегантный. К сожалению, постановка вопроса осталась:
    • WBAppCEF кликнул на пагинацию и получил новый УРЛ типа ?page=2. Как передать этот УРЛ и все последующие в очередь парсера?
     
  5. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    Первая проблема была в том, что хтмл с пагинированных страниц не подгружался в парсер. Было необходимо передать GETHTML, и почистить его.

    [​IMG]
     
    Последнее редактирование: 3 сен 2019
    Root нравится это.
  6. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    Ага, а теперь вот нарвался: WBAppCEF репродуцируемо зависает при пролистывании 12 страниц (?page=12). Пробовал выставлять таймауты побольше - не помогает. Причём зависает НЕ из-за того, что ресурсов не хватает - РАМ и ЦПУ в норме, когда зависает, то ЦПУ прыгает на 40% занятости, где-то с 10%.

    И ещё одна репродуцируемая ошибка:
    • если пытаюсь прогнать сценарий яваскрипта в WBAppCEF для УРЛ Ссылки недоступны для гостей - то всё ОК (за исключением зависания на 12 странице пагинации)
    • Если пытаюсь сделать предпросмотр результатов сканирования для этого же УРЛ - гарантировано получаю ошибку "NAVIGATEERRORCODE:ERR_TIMED_OUT".

    Такая проблема касается всех УРЛ с пагинацией - при предпросмотре результатов сканировани - ошибка, в WBAppCEF - ошибки нет, но завис. Боюсь, именно из-за этой особенности пагинация не попадает в очередь...
     
    Последнее редактирование: 3 сен 2019
  7. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Тут от меня не зависит.

    Либо виснет сам Chromium.
    Либо его вешает скрипт на WEB-странице.
    Либо ваш Javascript.

    PS: Браузер не отвечает? Или как проявляется описанное зависание.
     
  8. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    Зависает (freeze) весь правый фрейм WBAppCEF, там, где браузер. Левый фрейм, где команды сценария, не реагирует также - но всё окно даёт себя закрыть обычным путём.

    Яваскрипт (мой) вешать не должон - это копия яваскрипта из видео.

    Этот эффект подвисания не наблюдается, если листать не нажимая кнопку "следующая страница", а вручную менять цифры в строке адреса: ?page=11, ?page=12 и таким образом грузить пагинационные страницы. То есть, Вы правы - это страница такая:(

    Есть ли какой-то метод пользоваться {num}, если в УРЛ присутствуют разные неизвестные слова, типа Ссылки недоступны для гостейhotel/berlin?page=12

    Просто получается, что при нынешней ситуации мне страницу вообще никак не спарсить - либо не парсить пагинацию вообще, и тогда 80% информации теряется, либо парсить пагинацию - и тогда движок неминуемо зависнет.
    Пока что вижу единственный сценарий - добавлять последовательно номера страницы к УРЛ (скриптом?), потом вводить получившийся УРЛ в строку браузера (Enter на клавиатуре?), проверяя ответ на наличие информации, чтобы вовремя остановиться. Но это какая-то заоблачная магия.
     
    Последнее редактирование: 3 сен 2019
  9. Root

    Root Администратор Администратор

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Откуда вы их хотите брать? Их же нужно откуда-то взять? Ввести вручную или как?
     
    evgenij нравится это.
  10. evgenij

    evgenij Member Пользователи

    Регистрация:
    10 авг 2019
    Сообщения:
    49
    А вот это наверно вариант! Подождать некоторое время, пока спарсятся все категории, а потом создать списки их пагинации, заведомо слишком большие, страниц по 50, чтоб наверняка всё взять, и добавить в очередь. Тогда не придётся листать - и браузер не подвиснет. Несколько менингитное решение - зато сработает.
     
    Root и xLime нравится это.

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