Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Вышла библиотека PyWhat для автоматического парсинга трафика

Блог компании Дата-центр «Миран» Информационная безопасность *Python *Программирование *Машинное обучение *


Разработана удобная библиотека PyWhat, которая помогает классифировать данные в неструктурированном массиве. Например, у вас несколько мегабайт трафика, записанного в стандартном формате .pcap. Что с ним делать? PyWhat спарсит все строки, выделит:

  • кошельки криптовалют,
  • номера социального страхования,
  • кредитные карточки,
  • заголовки видеороликов Youtube ID,
  • любые хэши,
  • другие известные типы данных.
Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 4K
Комментарии 0

Суд запретил Double Data использовать данные пользователей «ВКонтакте»

Big Data *Законодательство в IT Социальные сети и сообщества IT-компании

Девятый арбитражный апелляционный суд Москвы отменил решение суда первой инстанции и признал в действиях компании Double Data нарушение прав на использование базы данных «ВКонтакте».

Читать далее
Всего голосов 12: ↑11 и ↓1 +10
Просмотры 3.6K
Комментарии 6

Возможно это ваш аватар, %username%

Интерфейсы *
Совсем недавно гуляя от нечего делать по просторам Интернет, решил поискать все мои загруженные аватары через всем известные поисковики картинок. И тут, как оно всегда бывает, пришло озарение…

При регистрации на всякие веб-сооружения будто форумы блоги и др. дозволяется использовать свой аватар, загружая его из компьютера, вводя его URL или же выбирая одну из аватар в галерее. // юзер на распутье
Первый путь не хорош тем, что не каждый пользователь хранит свою аватрау на видном месте и ему приходится искать по всему компьютеру.
Второй аналогичен первому, только искать приходится в закладках и др.
Третий путь — euronews на этом месте бы показал часть галереи аватар рядового форума с подписью «no comment».
Есть и четвертый путь.
Читать дальше →
Всего голосов 73: ↑62 и ↓11 +51
Просмотры 2.5K
Комментарии 35

Парсим выдачу Яндекса

PHP *
Приветствую всех читателей!

Я начал заниматься SEO недавно, и сразу же столкнулся с задачей определения позиций продвигаемых сайтов по ключевым словам в поисковиках. Задача тривиальная и решается на ура различным ПО, которое у всех SEO-специалистов на устах: Semonitor, AllSubmitter, etc. Помимо проприетарности, которой попахивает от всех подобного рода программ, в них есть, как это не парадоксально, ряд технических моментов, из-за которых хочется выбросить компьютер в окно.
Я бы не прочь купить Semonitor, но попользовав демо-версию, решил от этой идеи отказаться — на оф.сайте программы доступная для скачивания версия у меня глючила, требовала обновить себя, а после выпрошенного у меня обновления и вовсе отказывалась заниматься анализом позиций. Самому настроить, как Вы понимаете, нельзя.
AllSubmitter в этом плане получше, позволяет даже кастомизировать регулярные выражения для поисковиков, что вроде как делает этот софт устойчивым к смене формата выдачи, однако и с ним не все слава богу — когда 18.08.2008г. Яндекс вдруг изменил формат выдачи результатов поиска, вместе с тем поменяв и URL ссылок (возможно, эксперименты с вводом учета переходов, подробнее об этом писалось здесь), то и AllSub оказался бессилен. Правда, на следующий день Яндекс снова вернулся к старому формату выдачи, но прецедент, тем не менее, произошел.
Читать дальше →
Всего голосов 51: ↑29 и ↓22 +7
Просмотры 32K
Комментарии 17

Выкусывание текстовой даты из абстрактной текстовой строки

Чулан
Это пока что пост-вопрос, я уже в процессе и обещаю поделиться наработками. Для одного из сервисов мне нужен некий механизм — мы даём пользователю возможность ввести дату в любом текстовом виде, но в момент парсинга должны точно понять, что он имел в виду. Задача немного упрощается тем, что всё происходит на английском языке. Например вот:
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 406
Комментарии 17

Введение в поиск по тексту

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

читать дальше
Всего голосов 59: ↑57 и ↓2 +55
Просмотры 1.3K
Комментарии 16

Альтернатива брутфорсу. Текстовый поиск с хеш-функцией

Информационная безопасность *
Ранее я уже писал об азах текстового поиска, теперь хочу продолжить и написать о том, как развиваются алгоритмы в сторону эффективности.
Итак, как Майкл Рабин и Ричард Карп разогнали алгоритм?

читать далее
Всего голосов 61: ↑57 и ↓4 +53
Просмотры 1.1K
Комментарии 19

Gmail grabber — класс парсинга контактного листа

Чулан
Собственно говоря читайте сабж.

Функции:

Login — Вход в gmail. Возвращает стандартно — true/false
Сразу после входа в систему проиходит импорт контактного листа в переменную ContactList
Читать дальше →
Всего голосов 19: ↑11 и ↓8 +3
Просмотры 400
Комментарии 9

Prett Parsing — метод Вогана Пратта для разбора выражений

Алгоритмы *
В тему компиляций и вычислений выражений.

В далёком 1973 году Воган Прэтт (Vaughan Pratt) предложил простой и эффективный метод разбора выражений, не использующий ни автоматы, ни грамматику как таковую.

Идея заключается в том, что каждый символ (token) наделяется свойствами:
lbp = приоритет связывания символа слева,
nud = функция, определяющая результат применения оператора в начале выражения,
led = функция, определяющая результат применения в середине выражения.

Основной разбор осуществляется по схеме:
разбор(приоритет продолжения):
    вытолкнуть символ из входного потока
    результат = вызов nud этого символа
    пока приоритет lbp следующего в потоке символа > приоритета продолжения:
        вытолкнуть символ из входного потока
        результат = применени led этого символа к текущему результату

Константы и переменные имеют приоритет связывания 0, а функция nud возвращает их значение (или ссылку). Поэтому применение разбора к константам сразу возратит их значение.
Для бинарных операторов функция led рекурсивно вызывает продолжение разбора (справа) вплоть до более низкого приоритета, и делает что-нибудь с уже накопленым (слева) результатом, и полученным рекурсивно.
Результат применения оператора аггрегируется для внешнего вызова.
Много-арные операторы — получают аргументы дополнительным вызовом функции разбора.
Префиксные операторы делаются с помощью определения для них функции nud.
Для правостороннего связывания меняется приоритет продолжения рекурсивного разбора.

На сайте effbot.org приводится подробная реализация на питоне.
Там же есть ссылки для жаваскрипта и схемы.
наглядный пример на питоне
Всего голосов 38: ↑36 и ↓2 +34
Просмотры 4.7K
Комментарии 15

Еще о парсинге на Prolog'е

Prolog *
Вот тут наткнулся на, в общем-то, простую задачку состоящую в парсинге текстового файла, содержащего 5 миллионов float'ов (и подсчете их суммы). Файл генерируется следующим C#-кодом:
static void Main(string[] args)
{
  using (Stream stm = new FileStream(@"d:\numbers_large.txt", FileMode.Create))
  {
    TextWriter wr = new StreamWriter(stm);
    System.Random r = new System.Random();
    for (int i = 0; i < 5000000; i++)
    {
      double d=10000*r.NextDouble() * (r.NextDouble() > 0.7 ? -1.0 : 1.0);
      wr.Write("{0} ", d);
    }
    wr.Flush();
  }



Задача ставилась в контексте обсуждения производительности haskell'я в применении его к задачам парсинга. Я знал, что на прологе подобные задачи решаются красиво и непринужденно используя технику DCG (Definite clause grammar: 1, 2, 3, 4). Фактически, это описание грамматик на языке Пролог, и парсинг по ним, основанный на переборно-откатном принципе работы пролога.

Ну то есть обычно получается очень кратко и красиво (например, вот решение задачки о сбалансированности скобок этим методом: программа из 7 строк), но, я подозревал, что не всегда быстро. Собственно, это мне захотелось проверить.
Читать дальше →
Всего голосов 12: ↑10 и ↓2 +8
Просмотры 3.5K
Комментарии 7

Musifire — поиск музыки по заданным пользователем сайтам

Чулан
Musifire screenshot

Сначала


Как-то давно, когда у меня внезапно поломался плеер last.fm, я решил, что напишу свой плеер с блекджеком и шлюхами. Так появился первый Musifire — программа, написанная на Flex+AS3 под Adobe AIR, которая искала музыку на паре отличных ресурсов, умела брать похожих исполнителей и песни с last.fm'а и составлять по ним плейлисты. Благодаря фидбеку от десятка юзеров удалось довести программу до более-менее приличного вида, хотя всякие мелкие неприятные баги остались там и по сей день. После этого я ее забросил, потому что мне совсем не нравилось, как был написан код, а переписывать было жутко лень. :) Его я, кстати, выложил на Sourceforge, каждый может сходить, посмотреть, чекаутнуть и поужасаться :)

Сейчас


Вторым стимулом в написании такого рода программы была практика разработки на as3, и практика обработки данных разных форматов. И вот недавно снова возникла потребность в улучшении своих навыков программирования и обработки данных.
И поэтому я решил, что все должно быть круче, чем в первый раз.
Всего голосов 36: ↑35 и ↓1 +34
Просмотры 345
Комментарии 66

Текст любой ценой: DOCX и ODT

PHP *
Недавно возникла задача получения чистого текста из различных форматов документооборота — будь-то документы Microsoft Word или PDF. Задача была выполнена даже с чуть более широким списком возможных входных данных. Итак, этой статьёй я открываю список публикаций о чтении текста из следующих типов файлов: DOC, DOCX, RTF, ODT и PDF — с помощью PHP без использования сторонних утилит.

Читать дальше →
Всего голосов 113: ↑98 и ↓15 +83
Просмотры 59K
Комментарии 60

Текст любой ценой: PDF

PHP *
Продолжаем разбирать текстовые форматы на предмет получения текста. Итак, обещанный ранее PDF.

С portable document format'ом не всё так просто, как DOCX или ODT, что мы рассматривали в прошлый раз, но всё же это всё ещё изначально текстовый, а не бинарный формат. Вы удивлены? Тогда давайте посмотрим на то, что там внутри. Дальше действительно много текста.

Читать дальше →
Всего голосов 77: ↑75 и ↓2 +73
Просмотры 75K
Комментарии 20

Текст любой ценой: RTF

PHP *
Что ж продолжим наши изыскания на предмет получения текста из различных форматов данных. Не так давно мы с вами научились вытаскивать текст из zipped-xml-based файлов (odt и docx), а также, в начале этой недели, из pdf. Сегодня мы продолжим с обещанным rtf.

Rich Text Format (он же rtf), вы могли бы подумать, достаточно забытый, хотя и не очень сложный формат представления текстовых данных. Что ж, относительно несложный для получения текста, но за свою историю: от своей первой версии до текущей 1.9.1 — он приобрёл под 300 страниц официально документации и огромное количество надстроек, которые в большей степени нам будут мешать при получении plain text'а. Попробуем их обойти…
Читать дальше →
Всего голосов 67: ↑60 и ↓7 +53
Просмотры 76K
Комментарии 49

Текст любой ценой: WCBFF и DOC

PHP *
Несколько позже, чем хотелось, но продолжаем наш разговор о получении текста из разных форматов данных. Мы с вами уже познакомились с тем, как работать с изначально XML-base файлами (docx и odt), прочитали текст из pdf, преобразовали содержимое rtf в plain-text. Теперь перейдём в вкусненькому да сладенькому — формату DOC.
Читать дальше →
Всего голосов 72: ↑67 и ↓5 +62
Просмотры 26K
Комментарии 25

PHP: массивы, возвращаемые функцией

Ненормальное программирование *
Мне нравится PHP (если вам не нравится — пожалуйста, забудьте про этот топик. Не надо холиварить) и еще мне нравится одна штука, которая прям везде есть, а в PHP отсутствует:

superFunction(foo, bar)[2];


Что делает этот код? Правильно! Возвращает третий элемент массива, который возвращает superFunction() с аргументами foo и bar.

В PHP-синтаксисе это выглядело бы так:

superFunction($foo, $bar)[2];


Вот только этот код выдает Parse Error. «И поделом!» — раздаются уж крики ненавистников синтаксического сахара. Я предлагаю им тоже отправиться подальше от этого топика, чтобы не холиварить и не доказывать, что это не нужно (посмотрите, в каком я блоге это разместил, в конце-то концов).

На сайте PHP я узнал, что такого синтаксиса разработчики позволять не планируют даже в 6 версии. Ну, блин. Я и сам — молодец! Итак, за ночь я написал небольшой класс, который, если его правильно использовать, разрешает работать с массивами по-человечески.

мне не страшно
Всего голосов 78: ↑43 и ↓35 +8
Просмотры 9.8K
Комментарии 113

Текст любой ценой: PPT

PHP *
Некоторое время назад мы с вами обсуждали получение чистого текста из различных форматов данных: будь то PDF или DOC. В одном из обсуждений был высказано предположение, что при парсинге презентаций PowerPoint я заработаю геморрой или другую страшную болезнь мягкой точки. Что ж, волей судеб мне пришлось доставать текст и из этого «сладенького» формата. Скажу честно, геморрой заработать не удалось, а вот класс для парсинга презентаций вышел.
Читать дальше →
Всего голосов 54: ↑46 и ↓8 +38
Просмотры 4.4K
Комментарии 31

LogParser — привычный взгляд на непривычные вещи

SQL *
Когда я в очередной раз использовал LogParser, то чтобы проникнуться и чужим опытом, ввел его название в поиск на Хабре. Как результат — сообщение «Удивительно, но поиск не дал результатов». Вот уж воистину удивительно, когда столь интересный инструмент обойден вниманием. Пришла пора восполнить этот пробел. Итак, встречайте LogParser. Маленькая, но чертовски полезная утилита для любителей SQL.

Из названия инструмента, казалось бы, очень непросто понять, что он делает в разделе SQL. А правда заключается в том, что он такой же LogParser, как и ChartGenerator. В то смысле, что он справляется с обоими задачами с одинаковыми успехом. В целом я бы его охарактеризовал как SQL-процессор гетерогенных данных. Концепция работы в общем такова, что он берет данные из некоторого формата и преобразует их в табличный вид (собственно говоря, только на этом этапе и выполняется иногда парсинг). Затем, посредством выполнения над этими табличными данными некоторого SQL-запроса формирует таблицу с результатом и сохраняет ее опять же в некотором формате. Если коротко, то цепочка выглядит как подготовка входных данных->SQL-процессинг->генерация выходных данных.
Читать дальше →
Всего голосов 56: ↑46 и ↓10 +36
Просмотры 47K
Комментарии 17

MODx и парсер таблички с чужого сайта

Чулан
Наверное любой программист слэш администратор сайта сталкивается с проблемой импорта данных с чужих сайтов. Задача эта очень тривиальна, и не требует каких-то особых знаний… вопрос только в обертке. Чтобы дополнить коллекцию статей по MODx пишу эту статью, быть может кому и пригодится.
Внимание! Никакой практической ценности данная запись не несет, только теоретическую нагрузку а-ля «Простой пример работы с back-end'ом MODx».
А задача была: таблицу со страницы example.com распарсить, переоформить и себе на сайт засунуть.
Читать дальше →
Всего голосов 13: ↑10 и ↓3 +7
Просмотры 1.2K
Комментарии 9