Content Downloader & xpath

Тема в разделе "Решение различных задач по парсингу", создана пользователем Bulwinkle, 10 авг 2019.

  1. Bulwinkle

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

    Регистрация:
    5 май 2018
    Сообщения:
    7
    Всем привет (Если не в тот раздел - простите).
    Ребята, вопрос возможно ли в CD парсить по "xpath" ? Если да, подскажите плз как?
    Если такой возможности нет, то почему Авторе не хочет реализовать? Ведь это в разы удобней чем проставлять границу (В браузере уже готовую регялярку взял проставил, и гоу)
    /html/body/div[*]/div/div[*]/div[*]/div/div/div/div/div[*]/div[*]/div
    - парсер всей морды авито
     
  2. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    543
    Город:
    Мордор
    Если нужно в CD что то через XPATH делать, можно подключить PHP_SCRIPT / через макрос.
    Но зачем если есть отлично визуализированный инструмент назначения границ парсинга с кучей наворотов?
    Сравнимые по сложности проекты: На CD делать проект парсинга полчаса. На XPATH и DOM - 2 часа.

    XPATH по моему мнению это точно не удобнее CD
     
  3. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    312
    ++
    тем более xpath составленные таким образом /html/body/div[*]/div/div[*]/div[*]/div/div/div/div/div[*]/div[*]/div не надежные, xpath надо привязывать к типам элемента, атрибутам. использовать операторы типа conteins
     
    kagorec и Djahat нравится это.
  4. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    543
    Город:
    Мордор
    XPATH хорош в парсинге XML нативными методами PHP, а для всего остального, мне не очень нравится. Надо каждый день им пользоваться иначе синтаксис забудешь такой замороченный за пару месяцев
     
  5. Bulwinkle

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

    Регистрация:
    5 май 2018
    Сообщения:
    7
    Зачем знать синтаксис? любой браузер его отлично и так отдаст.
    пример...
    xpath круче, и проще любых границ!
    [​IMG]
     
  6. Djahat

    Djahat Well-Known Member Пользователи

    Регистрация:
    14 янв 2013
    Сообщения:
    543
    Город:
    Мордор
    Ну не буду спорить, всем разное нравитСО
     
  7. kenny872012

    kenny872012 Well-Known Member Пользователи

    Регистрация:
    18 фев 2018
    Сообщения:
    312
    Как это зачем?! Если составить xpath таким методом /html/body/div[*]/div/div[*]/div[*]/div/div/div/div/div[*]/div[*]/div это то же самое что использовать css селекторы для поиска элемента, т.е. если в верстке что то поменяется до последнего элемента /div, парсер перестанет работать корректно, по этому надо знать синтаксис. Или если лень учить, установите какое-нибудь расширение для браузера типа chropath, которое будет отдавать xpath в более или менее нормальном виде

    [​IMG]
     
    Последнее редактирование: 10 авг 2019
  8. kagorec

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

    Регистрация:
    3 янв 2011
    Сообщения:
    4.429
    Адрес:
    Latvia
    Ребята, вы так пишите что всегда назначение границ это нереально трудное дело. Тут на форуме немало тем про то как найти тег картинка - тоесть если самый простой вариант вызывает трудности обычному пользователю то вариант с xpath показался бы непостижимым.
    п.с. я сторонник xpath но в умеренных количествах и там где надо.
     
    Djahat и Root нравится это.
  9. Root

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

    Регистрация:
    10 мар 2010
    Сообщения:
    14.818
    Город:
    Барнаул
    Сделать то можно, только смысла в этом не вижу. Куда проще и быстрее все решается через существующую систему. Тем более, как и говорили выше, XPath от страницы к странице не такой "стабильный".
     
    kagorec и Djahat нравится это.
  10. Bulwinkle

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

    Регистрация:
    5 май 2018
    Сообщения:
    7
    Почему вы так считаете? В зенке xpath реализован на ура. xpath очень удобен при парсинге контента. Вам многие пользователи будут благодарны за данную опцию. без нее очень костыльно верстать шабы (особенно если парсить внутри таблиц) Можно же дать юзеру выбор парсить дивами/regex или xpath vs css Selector. Просто выбора нету
     
    Последнее редактирование: 26 сен 2019
    inotoxic нравится это.
  11. Kreol

    Kreol Модератор Команда форума Модератор

    Регистрация:
    6 янв 2013
    Сообщения:
    2.666
    По поводу xpath согласен, реализация нужна и важна, намного важнее чем работа над текущими вопросами
     
    xgguy и inotoxic нравится это.
  12. inotoxic

    inotoxic Well-Known Member Пользователи

    Регистрация:
    13 сен 2015
    Сообщения:
    867
    xpath - не стабилен в том случае, если его выражение "криво" составлено

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

    Если рассматривать в контексте пакета HTMLAgilityPack - в котором, можно проводить обработку текста на поиск НЕ закрытых html тегов и закрывать их.

    Для себя, в рамках в Content Downloader использование xpath вижу в следующем:
    1)Задание границ парсинга.
    Указал через xpath какую часть html кода на странице забирать и не нужно думать как там задать начало границы и конец, а также альтернативные варианты задания границ
    2)Обработка таблиц (блоков) характеристик товаров
    Указал xpath на пару характеристика - значение, передал в динамиквалью
    3)Математические действия
    4)Забирать данные с параметрами - InnerHtml, OuterHtml, InnerText

    Все вышесказанное используется в ежедневной работе в ЗенноПостере

    PS Внедрение xpath, определенно расширит удобство и качество работы с Content Downloader
     
    Bulwinkle нравится это.
  13. Bulwinkle

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

    Регистрация:
    5 май 2018
    Сообщения:
    7
    Вы описали всю мою мысль.
    это вообще лайново, не нужно рыться в громазком коде, искать границы, парсить в граница, и т.к.д... Почему root за такое время не внедрил xpath - не понятно. это же изи парсинг без костылей (танцев с бубном).
     
    Последнее редактирование: 27 сен 2019
    inotoxic нравится это.

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