swamp_agr (swamp_agr) wrote,
swamp_agr
swamp_agr

Парсер и многопоточность, часть 4

В этот раз поведаю вам о небольшом торжестве разума над глупостью. Тезисно, как всегда. Вкратце, время торжества!

  • Избавился от всех предварительных фильтрующих запросов в пользу кэша. Не понимаю, почему я его так боялся вначале. Процесс выздоровления шёл долго. Диагноз был неутешительным: боязнь кэша. Как и водится, для излечения следовало взглянуть в лицо собственному страху. И запилить пополняющийся новыми URL кэш. Реализация заняла 10 минут. После завершения парсинга целой категории кэш сбрасывается.
  • После реализации кэша обнаружил, что парсер делает двойную работу. А именно, отсылает HTTP запросы, получает группы URL. Фильтрует их. Делает те же исходные запросы. Фильтрует полученные вновь группы по предыдущему фильтру и уже после этого отсылает два других HTTP запроса для получения дополнительных атрибутов. Устранение двойной работы повлекло за собой создание сопутствующего типа данных вида (Text, [Tag String]) и проталкивание его дальше. Итого число запросов уменьшилось на 3% от общего числа. И вся двойная работа в парсере была ликвидирована. Торжество локальное!
  • Ресурс менее, чем через минуту работы парсера, впервые начал отдавать капчу вида ^[\w]{4}$ со всякими трансформациями текста. Я уже думал, что могу парсить его без каких-либо ограничений (за месяц разработки обнаружил, что выкачал 250 гб). Однако, к счастью, я заблуждался. Торжество ресурса!
  • И тут встаёт два варианта возможных событий: либо запилить антикапчу, ведь интересна тема распознавания текста с изображений, либо (что проще) прикрутить использование прокси.

Tags: haskell, parser, yesod
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments