Ответы пользователя по тегу Парсинг
  • Почему может происходить превышение тайм аута при парсинге (simple_html_dom)?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Как ты и сказал, это таймаут на выполнение скрипта твоим сервером.

    Попробуй запустить скрипт из командной строки:
    # php parser.php

    Второй вариант это увеличить время работы скриптов, но я бы не рекомендовал это делать. Парсеры лучше запускать из командной строки.

    Кроме того, обрати внимание, что в этой библиотеке есть метод: $dom = str_get_html($html) (кажется так), соответственно, ты можешь вначале скачать страницу с помощью file_get_contents или Curl и потом уже работать именно с контентом. Это поможет разделить логику непосредственно на загрузку и парсинг контента, что в свою очередь поможет разобраться с каждой проблемой по отдельности.
    Ответ написан
    Комментировать
  • Как распарсить строку и построить дерево категорий товаров и услуг?

    orlov0562
    @orlov0562
    I'm cool!
    Я напишу в целом, т.к. это подойдет для любого языка

    Алгоритм работы парсера довольно прост, и по большей части делится на 3и этапа:
    1) Получить данные
    2) Разобрать данные
    3) Сохранить данные

    1) Для того чтобы получить данные, надо изучить стек функций для работы с сетью. Можно гуглить по такому запросу "Как скачать веб-страницу" + твой ЯП (PHP, Java, Python и т.д.). Тут ты должен написать функцию которой на вход передашь url, а на выход получишь данные (html, json, xml и т.д.)

    2) Разобрать данные можно либо с помощью готовых библиотек под нужный формат, либо с помощью регулярных выражений, либо с помощью строковых функций. Тут на помощь придет запрос "Строковые функции" + твой ЯП или "регулярные выражения" + твой ЯП. На этом этапе ты должен написать функцию, которой на вход поступают данные, а на выходе получаешь заранее утвержденную структуру.

    3) Сохранять данные в необходимой структуре можно в файлы или в БД. Опять в гугл с запросом "Работа с бд " + твой ЯП, либо "Работа с файлами" + твой ЯП. Тут твоя задача написать функцию, на вход которой приходит заранее утвержденная структура, а на выходе ты получаешь результат "сохраненные данные"

    Ну, собственно и всё. Идешь в гугл, изучаешь матчасть и пишешь парсер.

    Если же тебя в большей степени интересуют алгоритмы разбора, тогда советую посмотреть код "калькуляторов" на твоем ЯП, погуглить можно по запросу "калькулятор со скобками", "Разбор и вычисление выражений". Это классическая задача, разбор твоего куска будет очень похож.
    Ответ написан
    6 комментариев
  • Как парсить теги?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Надо смотреть на нагрузку и скорость работы остального, если все остальное очень быстро, тогда можно словарь использовать. В противном случае можно и базу подергать, если с настройками базы все ок, то она и так закеширует частые запросы. Если это уник значения и будет уникальный индекс, то выборка не составит труда, если вдруг будет много-много данных, то можно создать memory table и дергать оттуда, ну или использовать любой дополнительный кеширующий механизм... В любом случае, я думаю что скорость обработки тегов как и сам парсинг не будет горлышком бутылки.. Основной тормоз будет на загрузке страниц.
    Ответ написан
    Комментировать