Ответы пользователя по тегу Парсинг
  • Как спарсить резюме с Superjob?

    viktorvsk
    @viktorvsk
    Откройте прекрасный мир HTML DOM парсеров
    А если нужно взаимодействие со страницей - тогда какой-нибудь mechanize или phantomjs, casperjs
    Ответ написан
    Комментировать
  • Какой парсер самый быстрый?

    viktorvsk
    @viktorvsk
    Самый производительный "HTML-парсер", вероятнее всего, это XSLT. Например, Xalan или Saxon
    Дополнительно:
    habrahabr.ru/post/203004
    en.wikipedia.org/wiki/Category:XSLT_processors

    P.S.
    Но если у вас будет много страниц небольшого размера, то парсер не играет никакой роли, т.к. задержка сети будет много выше.
    Ответ написан
    Комментировать
  • Может кто знает как спарсить эту страницу nokogiri?

    viktorvsk
    @viktorvsk
    Возможно, по-разному реагирует на разные юзер-агенты.
    Возможно, редиректы
    Например, https://github.com/typhoeus/typhoeus, открыл страницу без дополнительных настроек.
    Ответ написан
  • Как парсить страницу, с URL на основе запроса?

    viktorvsk
    @viktorvsk
    Потому что парсер сам не умеет догадываться, что нужно по страницам переходить?)
    Где код ?
    Ответ написан
  • Как соединить строку и значение атрибута url в Xpath?

    viktorvsk
    @viktorvsk
    Что значит не работает? Вы смотрели, что у вас селектор возвращает? Неужели именно то значение URL, что нужно?
    Нужно или так
    //div[@id='small-images']/ul/li/@url
    или так
    //div[@id='small-images']//li/@url
    Искомого вам элемента нет, потому что вы ищите li в непосредственных потомках (а там еще ul сначала)
    Ответ написан
  • Как спарсить конкретный элемент списка с помощью Xpath?

    viktorvsk
    @viktorvsk
    Непонятно, почему span у вас отсутствует, а text - присутствует
    //ul[@class='params']/li[./span[contains(.,'Браслет')]]

    Так contains чувствителен к регистру. Если нужно регистронезависимо - то читайте stackoverflow.com/questions/8474031/case-insensiti...
    Ответ написан
    1 комментарий
  • Как правильно обработать результат XPath в цикле?

    viktorvsk
    @viktorvsk
    Слабо понял, что куда подставить и что не работает, если ничего не трогать, но с помощью xpath можно сделать вот так:
    //sModel[../idModel='2986' and ../idMark='44']
    Ответ написан
  • Как спарсить содержимое 5000 ссылок?

    viktorvsk
    @viktorvsk
    selenium, phantomjs
    Ответ написан
    Комментировать
  • Как распарсить необычный файл JSON на С#?

    viktorvsk
    @viktorvsk
    К сожалению, это невалидный JSON.
    Если взглянуть на спецификацию: www.json.org справа в слобце используемых лексем можно увидеть, что пустое значение должно передаваться как null.
    У вас же есть последовательность ,,

    Приведенный источник, видимо сам немного умный и делает некоторые допущения при парсинге.

    Вы можете попробовать перед парсингом заменить вот такой регулярное выражение:
    /\,\s?+,/ на такую строку ',null,'

    Для вашего примера сойдет, но надо помнить, что такой вот JSON:
    { "key": "val,,ue" } такой подход тоже превратит в { "key": "val,null,ue" }

    Сходе не пришла мысль, как регуляркой выделить не строчные элементы. Это, наверное, не так то и просто, если учесть, что любой элемент будет находиться между двумя кавычками очень часто.

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

    Это невалидный формат данных. Здесь просто не будет
    Ответ написан
    Комментировать
  • Как извлечь информацию сайта в удобную таблицу?

    viktorvsk
    @viktorvsk
    Начните с того, что поймите, что вы описали не инструмент, а сервис (приложение или инфраструктуру). Разделите это "что-то" уже на инструменты. А дальше думайте, что можно найти в платном\бесплатном виде, а что выгоднее заказать разработать.

    В таком виде как описали, вы решения точно не получите ( и парсинг, и добавление в сферичскую базу, и фильтры, и просто решить проблему клиента ).
    Ответ написан
    Комментировать
  • Как написать универсальный парсер для множества однообразных сайтов?

    viktorvsk
    @viktorvsk
    Как раз занимаюсь этой проблемой.
    Скачать сейчас можно только https://github.com/victorvsk/apify-core
    Но уже есть сервер, клиент (админка), и готовится рецепт ansible/chief/puppet, где, в принципе, нужен будет только vps, и синтаксис типа:
    {
      "index": {
        "url": ["https://github.com/blog"],
        "js": false,
        "paginate": [
          "\\/?+$",
          "/?page=<% 1,2,1 %>"
        ]
      },
      "posts": {
        "from": "select('h2.blog-post-title a') from('index')",
        "js": false,
        "host": "http://github.com",
        "pattern": {
          "title": "<% .blog-title %>",
          "meta": {
            "calendar": "<% .blog-post-meta li:first %>",
            "author": "<% .blog-post-meta .vcard %>",
            "category": "<% .blog-post-meta li:last %>"
          },
          "body": "<% .blog-post-body %>"
        }
      }
    }

    (Этот "код" скачивает все посты с первых двух страниц гитхаба https://github.com/blog)
    Код на руби, но задумывается как standalone демон, так что можете или поучаствовать или подождать готового решения.
    Самая большая сложность, в ближайшее время, наверное, в нормальной документации.

    P.S. Смысл вообще в том, есть куча инстансов-парсеров на разных серверах (или на одном, или локально, неважно) и есть админка, где вы создаете сущности (юниты), в которых описываете структуру таким вот псевдо-синтаксисом (что откуда парсить) и в конце-концов указываете url, куда отправить готовый результат

    UPDATE: Выложил кривоватый кусок на хероку
    Если интересно, можете поэкспериментировать. Конечно, без документации тяжело, но, возможно, что то получится, используя примеры:
    Например, json указанный выше, можно отправить на адрес:
    https://agile-river-6704.herokuapp.com/crawler?apify_secret=secret

    POST запросом, Content-type: application/json
    А для проверки непосредственно синтаксиса, можно передавать не ссылки, а html. Например, вот такой json:
    {
    "html": "<html><head></head><body><div id='text'>Текст</div></body></html>",
    "pattern": { "title": "Значение", "title-2": "Это: <% #text %> <% html |first |html %>", "text-html": "<% #text | first | html %>" }
    }

    POST запросом на https://agile-river-6704.herokuapp.com/parser?apif...
    Важно указать в адресе ?apify_secret=secret

    Это, конечно, совсем черновой вариант, и хероку обрывает запросы более 30 секунд... Но может кто-то заинтересуется.
    Ответ написан
    5 комментариев
  • Как идентифицировать один и тот же товар в разных интернет-магазинах?

    viktorvsk
    @viktorvsk
    E1571G33114G75MA
    E1571G33114G75MAKS

    Знаки пунктуации и другие "стоп слова" (1366x768 LED LAPTOP...) нужно хардкодить и удалять сразу же. Регистр, в принципе, тоже сути не имеет.С удалением пробелов, возможно, надо поэксперементировать.
    Когда на стадии "очитски" достгли эксперементально приемлемого оптимума, идете и сверяете метрику. И определяете диапазон, при котором считаете, что слова действительно идентичны. Опять же, эксперементально.
    Ответ написан
    Комментировать
  • Как быстро записываются данные?

    viktorvsk
    @viktorvsk
    Данные записываются очень быстро. Так быстро, что обычно их прочесть не успеваешь, а они уже записались. Сделать этот процесс можно быстрее если: 1) уменьшить количество данных, 2) увеличить мощность вычислительных средств
    Ответ написан
    Комментировать