Ответы пользователя по тегу PHP
  • Как сделать данные читабельными?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    отдать хедер Content-type: text/plain не помогает?
    Ответ написан
    Комментировать
  • Как правильно распарсить?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    Не скажу что хорошо понимаю в PHP, но судя по логике у Вас странное условие ($parent == $node->nextSibling->parentNode), по-моему явно не хватает else
    if ($parent == $node->nextSibling->parentNode) {
        $page .= $content;
      } else {
        $id =$parent->getAttribute('id'); //значение id
        $num = substr($id, 5); //обрезаем "issue"
        $fp = fopen($catalog . '/' . $num . '.html', "w"); //создание файла
        fwrite($fp, $page); //запись
        fclose($fp); //закрытие
        $page = "";
      }


    Еще наверное имеет смысл проверять есть ли $node->nextSibling перед тем как забирать его parentNode. Не знаю насколько это критично в PHP.
    Ответ написан
  • Как спарсить данные script через phpQuery?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    Если страница догружается, значит скорее всего едет XHR запрос, данные в нем скорее всего в JSON. Возможно проще было бы забрать его и распарсить. Если бы дали URL который нужно забрать, можно было бы сказать больше.
    Ответ написан
  • Как правильно парсить https?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    Попробуйте первым делом максимально замаскироваться под браузер (посылайте с запросом заголовки, аналогичные браузерным. Удостоверьтесь что от вас уезжает браузерный User-agent а не что-то типа "php-crawler". После забора каждой страницы чистите куки-jar (очень часто помогает). Делайте паузы между заборами страниц, тут можно экспериментировать от нескольких секунд до минут, делать их рандомными. По поводу сертификата, можно отключить проверку сертификата:

    $this->client = new GuzzleClient(['verify' => false ]);
    Ответ написан
    Комментировать
  • Как получить абсолютную ссылку из относительной при парсинге?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    Сам я на PHP не пишу, поэтому загуглил и был весьма удивлен что не смог найти ничего кроме этого:
    https://github.com/monkeysuffrage/phpuri

    Как вариант можно написать функцию самостоятельно
    Ответ написан
    Комментировать
  • Как достать src внутри тега iframe?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    Если значение атрибута пустое, то он заполняется с помощью JS. Это легко проверить, если у Вас стоит Quick Javascript Switcher для браузера. Просто отключаете JS и смотрите на интересующий Вас элемент DOM.
    Вам надо изучить механику работы страницы и найти откуда берется нужный Вам URL. Или Вы можете использовать headless browser.
    Ответ написан
    1 комментарий
  • Как оптимизировать процесс парсинга данных с веб-сайтов?

    JabbaHotep
    @JabbaHotep
    Пытаюсь минимизировать ручную работу
    Ну тут все просто, делаете очередь в базе из 20 записей, каждый раз когда переходите к новому сайту, запрашиваете одну запись отсортированную по дате последнего обновления, парсите сайт, по окончании апдейтите дату обновления для записи, и забираете следующую запись.
    Ну и соответственно если сервер перегрузят или остановят парсер, при перезапуске он всегда возьмет следующий сайт.
    Ответ написан
    Комментировать