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

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Пока ваш парсер по поведению не отличается от обычных пользователей сайта - он незаметен.
    Достаточно корректно эмулировать виртуального пользователя (браузер, JS-события, периодичность запросов и правильность навигации), чтобы не быть забаненым.
    Вкратце: запрос одной страницы на одном домене - не чаще одного раза в 15 секунд.
    Ответ написан
  • Парсинг данных, какой язык практичней?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    regex - минимум!
    Дальше - любой язык.

    Задача: Быстрота, Надежность, Многопоточность, что бы выдерживал большое количество обращений в секунду.
    Не DDoS'те ресурсы!!! Уважайте друг друга и избежите бана! Парсите всегда с интервалом и в один поток!

    Классика PHP так как скрипт будет на сервере я думаю при многократном обращении в секунду будет долго обрабатывать. Допустим парсят ежесекундно 500 человек по ( хххх mb) данным. Небольшая ли нагрузка для PHP как долго он будет справляться с задачей?
    Я бы посоветовал вначале ПОСТЕПЕННО всё скачать, чтобы не напрягать ресурс-донор.
    А уже после - спокойно распарсите у себя на сервере.
    Попробуйте HTTrack
    Ответ написан
    6 комментариев
  • Как реализовать поиск слов с опечатками или незначительными разночтениями?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Считайте подряд идущие верные буквы и буквы-несовпадений (пропущена, любая лишняя, другая вместо нужной), запоминаете расстояния для всех ошибочных цепочек.
    Затем вычитаете из минимальной длины строки все ошибочные расстояния и делите на длину этой минимальной строки. Получаете коэффициент несовпадения. Умножив его на 100 - получите процент несовпадения строк.
    Ответ написан
    1 комментарий
  • Как ускорить работу парсера?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Используйте несколько потоков и асинхронную обработку.
    curl_multi_init() - в помощь!
    Ответ написан
    Комментировать
  • Как получить данные с другого сайта на свой сайт?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. При любом внешнем обращении к своему сайту - проверка времени кэширования предыдущих данных.
    2. Если оно больше установленного - делаем запрос через cURL (встроенный класс в PHP) к стороннему сайту и записываем результат к себе в базу/файл.
    Если меньше - не обращаемся к стороннему сайту и используем закэшированные данные (при необходимости).
    3. GOTO 1

    Таким образом, мы не создаём чрезмерной нагрузки на сайт-донор и имеем постоянное обновление данных. Периодичность запросов к сайту-донору (интервалы времени) - выбираете исходя из целей задачи.
    Я советую ставить не менее 30 минут, если данные там меняются редко.

    Лучше всего, поищите ссылку на RSS-ленту на стороннем сайте - это будет оптимальным индикатором новой информации.
    Ответ написан
  • Как скачать сегментированное видео?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Взять JS скрипт, которым плеер проигрывает и запустить из под phantom.js с сохранением сегментов сразу в папку.
    Ответ написан
    Комментировать
  • Лучшая производительность парсинга на js или php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Всё зависит от цели инструмента (веб-сервиса).

    Если нужен для каждого клиента отдельный свой результат и он не нужен серверу, то можно парсить и на JS и отдавать в браузер результат (nwjs.io ?).

    Если это важные данные, которые потом будут храниться на сервере и/или нужно избежать "замусоривания" со стороны клиента, то нужно делать на сервере.
    Ответ написан
  • Парсинг записей ВК на сайт, как сделать?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Возможно.
    С помощью программирования или публикации этой задачи на сайте фриланса и последующей оплаты работы исполнителя.
    Ответ написан
  • Как спарсить заголовки вопросов с сервиса otvet.mail.ru?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Ответ один: cURL/phantom.js + регулярки.
    Ответ написан
  • Как получить телефон, что подгружается ajax'ом?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Только с помощью виртуального браузера в памяти или с помощью обращения к сервису.
    Например, phantom.js, nightmare.js и т.д.
    Ответ написан
  • Парсинг php сайтов с помощью php?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    HTML - это данные разметки веб-страницы.
    PHP - это серверные скрипты
    типы данных - это XML(HTML), JSON и т.д.
    Парсер парсит нужные типы данных и разбирает в соответствии с шаблонами.
    Серверные скрипты при этом - никакой роли не играют: PHP, C#/.NET, Go, Python - абсолютно не важно.
    Динамический парсинг: www.nightmarejs.org
    Ответ написан
    3 комментария
  • Как пропарсить html на js?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Есть такой вариант: REX
    Ответ написан
    Комментировать
  • Как сравнить 2 текста и найти уникальные слова?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    1. Нужно разбить 2 текста на отдельные слова и отсортировать.
    2. Искать похожие в одном и в другом тексте и если есть такое - сразу исключать из двух массивов слов этих текстов.
    3. Оставшиеся в массивах - будут уникальными ("не пересекающимися") для заданных двух текстов.

    Похожие слова (строки) - можно отыскать с помощью PHP-скрипта нечёткого поиска или попробовать заказать у них сразу нужный софт для этой задачи.
    Ответ написан
    Комментировать
  • Поможет ли моем случает multi_curl улучить быстродействие и какие есть пути оптимизации парсинга?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Уважаемые знатоки, а какие еще методы оптимизации быстродействия можно провести?

    1. Можно оптимизировать парсинг для бэкграунд режима на основе предсказания. Т.е. если запросили товар с определёнными характеристиками, то все линки с этим товаром для всех магазинов - ставим в приоритет!

    2. Используйте круговую очерёдность доменов (round-robin) при обработке урлов из очереди, чтобы увеличить интервалы между запросами к одному сайту и тем самым, уменьшить риск бана.

    3. Создайте API для своего сервиса, к которому будут подключаться клиенты, а в клиентах - сделайте возможность получения информации о товарных предложениях с других сайтов минуя Ваш сервер (только это укажите явно!). Т.е., превратите клиентов в прайс-консолидаторы. Таким образом, Вы распределите нагрузку парсинга среди клиентов. А когда клиенты будут собирать информацию по конкретному товару сразу с нескольких URL - пусть автоматически отсылается информация через API на ваш сервер.

    4. (всё нижеописанное - для одного домена, который необходимо парсить!)
    Периодичность парсинга для конкретного магазина - зависит только от ширины вашего канала, вычислительных мощностей на вашей стороне и соблюдения АДЕКВАТНОГО интервала между последовательными запросами к этому (одному) магазину. Т.е. при "round-robin" следите, чтобы запросы были не чаще, чем раз в 5-10 минут.

    Или можно просто чередовать "пакет"/"период":
    "пакет": 100 запросов с периодом 2 минуты и пауза 3 часа,
    "период": 100 запросов на протяжении 3-х часов, и снова "пакет",
    и т.д. по-кругу (или в случайной последовательности).
    Ответ написан
    Комментировать
  • Как отпарсить сайт на PHP с авторизацией и отправлять уведомления?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Как считаете, уважаемые?
    Спамить нехорошо!
    Двигайтесь в сторону этого.
    Ответ написан
  • Парсер HTML на PHP без регулярных выражений с ноля?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Представим, что полученная страница валидная и мы записали ее в файл и т.к. само по себе содержимое уже имеет иерархию (html теги) то по какому алгоритму осуществлять поиск того или иного тега и все его содержимое?
    Единственный верный ответ: если структура документа древовидная - значит нахождение нужного узла - это обход такого "дерева".
    Далее - мы используем знания из документации W3C для понимания всевозможных вариантов открытия и закрытия тега - "узла". Это будут наши виртуальные "скобки".

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

    Затем, преобразуем раскрытие "скобок" к представлению через "обратную польскую запись" раскрытия скобок даст нам путь к нужному узлу.
    В итоге, получаем аналог XPath.

    Добавлю, что свойства тегов непосредственно к составлению "дерева" и его превращению в подобие XPath - никак не относятся.
    Свойства тегов - участвуют только в выборке нужного узла в дальнейшем.
    Они относятся только к выборке.
    Ответ написан
    Комментировать
  • Как в постоянном режиме парсить сайт?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Копайте в сторону phantom.js, чтобы получать доступ к скриптам в безынтерфейсном режиме и запускать в фоне.
    Ответ написан
    Комментировать
  • Как реализован режим чтения в браузерах?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Анализ DOM-дерева и выявление блока, содержащего основной контент.
    Простая фильтрация по кол-ву текста в одном уникальном блоке без повторов (списков) на текущем уровне DOM-дерева.
    Ответ написан
    Комментировать
  • Как получить значение ключа?

    xmoonlight
    @xmoonlight
    https://sitecoder.blogspot.com
    Dataobject.dataRow.keys[0]
    Dataobject.dataRow.keys.name
    Dataobject.dataRow.keys['name']
    Ответ написан
    Комментировать