Каждая девочка мечтает стать принцессой, быть самой красивой, самой умной и обязательно встретить принца. Множество маркетологов и PR-акул обогатили свои компании, играя на этих простых девичьих мечтах. Сферу IT, мужскую и брутальную, это явление тоже не обошло стороной. Известная компания запустила громкий конкурс на звание титула IT-принцессы. Всех, кто слышал и кому интересно, как оно было, приглашаю под кат.
Читать полностью »
Рубрика «парсинг» - 6
Как стать IT-принцессой
2016-04-20 в 7:23, admin, рубрики: html, python, информационная безопасность, парсингТеория и практика парсинга исходников с помощью ANTLR и Roslyn
2016-03-03 в 13:39, admin, рубрики: .net, antlr, AST, C#, java, php, PLSQL, roslyn, tsql, Блог компании Positive Technologies, грамматика, Компиляторы, неоднозначность, ошибка синтаксиса, парсинг, ПрограммированиеВ нашем проекте PT Application Inspector реализовано несколько подходов к анализу исходного кода на различных языках программирования:
- поиск по сигнатурам;
- исследование свойств математических моделей, полученных в результате статической абстрактной интерпретации кода;
- динамический анализ развернутого приложения и верификация на нем результатов статического анализа.
Наш цикл статей посвящен структуре и принципам работы модуля сигнатурного поиска (PM, pattern matching). Преимущества такого анализатора — скорость работы, простота описания шаблонов и масштабируемость на другие языки. Среди недостатков можно выделить то, что модуль не в состоянии анализировать сложные уязвимости, требующие построения высокоуровневых моделей выполнения кода.
К разрабатываемому модулю были, в числе прочих, сформулированы следующие требования:
- поддержка нескольких языков программирования и простое добавление новых;
- поддержка анализа кода, содержащего синтаксические и семантические ошибки;
- возможность описания шаблонов на универсальном языке (DSL, domain specific language).
В нашем случае все шаблоны описывают какие-либо уязвимости или недостатки в исходном коде.
Весь процесс анализа кода может быть разбит на следующие этапы:
- парсинг в зависимое от языка представление (abstract syntax tree, AST);
- преобразование AST в независимый от языка унифицированный формат;
- непосредственное сопоставление с шаблонами, описанными на DSL.
Данная статья посвящена первому этапу, а именно: парсингу, сравнению функциональных возможностей и особенностей различных парсеров, применению теории на практике на примере грамматик Java, PHP, PLSQL, TSQL и даже C#. Остальные этапы будут рассмотрены в следующих публикациях.
Читать полностью »
Распарсить HTML в .NET и выжить: анализ и сравнение библиотек
2015-12-23 в 16:02, admin, рубрики: .net, AngleSharp, C#, CsQuery, Fizzler, html, HtmlAgilityPack, regex, парсинг, Программирование, разработка, метки: AngleSharp, CsQuery, Fizzler, HtmlAgilityPack
В ходе работы над одним домашним проектом, столкнулся с необходимостью парсинга HTML. Поиск по гуглу выдал комменарий Athari и его микро-обзор актуальных парсеров HTML в .NET за что ему огромное спасибо.
К сожалению, никаких цифр и/или аргументов в пользу того или иного парсера найдено не было, что послужило поводом к написанию данной статьи.
Сегодня я протестирую популярные, на данный момент, библиотеки для работы с HTML, а именно: AngleSharp, CsQuery, Fizzler, HtmlAgilityPack и, конечно же, Regex-way. Сравню их по скорости работы и удобству использования.
TL;DR: Код всех бенчмарков можно найти на github. Там же лежат результаты тестирования. Самым актуальным парсером на данный момент является AngleSharp — удобный, быстрый, молодежный парсер с удобным API.
Тем, кому интересен подробный обзор — добро пожаловать под кат.
Читать полностью »
Парсинг формул в 50 строк на Python
2015-12-16 в 8:45, admin, рубрики: python, алгоритм сортировочной станции, генераторы, Обратная польская запись, парсинг, яндексВдохновение — задача с собеседования Яндекса и статья «Парсинг формул в 40 строк».
Моей целью было посмотреть, как будет выглядеть «pythonic» решение этой задачи. Хотелось, чтобы решение было простым, код читаемым и разделённым. В итоге ещё получился и пример применения цепочки генераторов (generators pipeline).
Читать полностью »
По мотивам «Обрабатываем строки на Arduino»
2015-11-18 в 11:39, admin, рубрики: arduino, парсинг, программирование микроконтроллеров Прочитал сегодня пост на Geektimes, и хочу поделиться своим опытом. Не хочу обсуждать плюсы и минусы Arduino, но условия проекта, в котором применил нижеописанное — должно быть сделано под неё. Суть — нужно предоставить пользователю терминал для управления устройством. Соотвественно, не малая часть работы является работой со строками. Применять или нет предложенное решение — пусть каждый решает сам.
Читать полностью »
Обрабатываем строки на Arduino
2015-11-16 в 6:29, admin, рубрики: arduino, парсинг, программирование микроконтроллеров Я пришел к программированию в целом, и программированию Arduino в частности, полным нулем, около двух месяцев назад. Сейчас же, по ходу своей текущей деятельности я ощутил необходимость в освоении обработки строк на ардуино. Обычный поход в Google за информацией не обрадовал статьей, где все просто и понятно для чайников написано. И поэтому я здесь для того, чтобы рассказать о том, каким образом был реализован парсинг строк из последовательного порта и какие были встречены на пути подводные камни. Интересующихся прошу под кат.
Читать полностью »
В какой день лучше писать на «Мегамозге»?
2015-06-17 в 10:25, admin, рубрики: Fixico, аналитика, Блог компании Fixico, веб-аналитика, Исследования и прогнозы в IT, парсинг, статистика, Фиксико
Пару месяцев назад уважаемые TM запустили программу поддержки стартапов на Мегамозге. Мы с удовольствием решили принять в ней участие и подали заявку. Несколько позже получили долгожданный имейл о том, что наша заявка принята. Обрадовались и занялись подготовкой первого поста. Как только он был готов, возникли вопросы: «В какой день полезней всего его публиковать?», «В какой день больше всего просмотров/комментариев?»
За ответами и маленькими бонусом, просим под кат:
Читать полностью »
Поиск наилучшей последовательности просмотра списка 250 лучших фильмов с помощью языка Wolfram Language (Mathematica)
2014-12-12 в 21:33, admin, рубрики: imdb, Wiki-технология, wikipedia, Wolfram, wolfram language, wolfram mathematica, визуализация данных, кино, оптимальный путь, открытые данные, парсинг, Программирование
Скачать перевод в виде документа Mathematica, который содержит весь код использованный в статье, можно здесь (архив, ~76 МБ).
Введение
Некоторое время назад, если быть точным — 515 дней, вышел пост Маттиаса Одисио (Matthias Odisio) под названием “Random and Optimal Mathematica Walks on IMDb’s Top Films” (Случайные и оптимальные блуждания Mathematica по списку 250 лучших фильмов по версии IMDB). В нем рассказывается о том, каким образом можно получить оптимальную последовательность просмотра фильмов из соответствующего списка, основанную на близости жанров фильмов и близости постеров фильмов с точки зрения цвета.
Читать полностью »
Делаем дамп фотографий из диалога vk.com
2014-12-01 в 9:58, admin, рубрики: python, парсинг, Программирование, Регулярные выражения, социальные сетиВсем, привет!
Вчера мне понадобилось скачать все фотографии из диалога с одним человеком в vk.com. Фотографий было больше 1000 штук. Понятное дело, что ручками это все делать было бы утомительно и… Стыдно. Не для того программированием занимаюсь, чтобы такую грязную работу делать не автоматизированно. Поэтому было решено написать скрипт.
В качестве языка был выбран Python. Его удобно использовать для консоли, он довольно быстрый, есть модуль urllib, позволяющий «одним движением» скачивать картинки по ссылке. Но главная причина — это то, что я начал изучать его недавно. Решил дополнительно попрактиковаться.
Сам скрипт получился небольшой, но было бы интересно описать процесс создания. Буду стараться писать побольше комментариев в коде, чтобы те, кто не знает python, тоже смогли понять процесс. А от знатоков очень приветствуются советы и указания. Итак, приступим.
Читать полностью »
Парсим на Python: Pyparsing для новичков
2014-10-03 в 8:03, admin, рубрики: pyparsing, python, для начинающих, парсингПарсинг (синтаксический анализ) представляет собой процесс сопоставления последовательности слов или символов — так называемой формальной грамматике. Например, для строчки кода:
import matplotlib.pyplot as plt
имеет место следующая грамматика: сначала идёт ключевое слово import, потом название модуля или цепочка имён модулей, разделённых точкой, потом ключевое слово as, а за ним — наше название импортируемому модулю.
В результате парсинга, например, может быть необходимо прийти к следующему выражению:
{ 'import': [ 'matplotlib', 'pyplot' ], 'as': 'plt' }
Данное выражение представляет собой словарь Python, который имеет два ключа: 'import' и 'as'. Значением для ключа 'import' является список, в котором по порядку перечислены названия импортируемых модулей.
Для парсинга как правило используют регулярные выражения. Для этого имеется модуль Python под названием re (regular expression — регулярное выражение). Если вам не доводилось работать с регулярными выражениями, их вид может вас испугать. Например, для строки кода 'import matplotlib.pyplot as plt' оно будет иметь вид:
r'^[ t]*import +D+.D+ +as D+'
К счастью, есть удобный и гибкий инструмент для парсинга, который называется Pyparsing. Главное его достоинство — он делает код более читаемым, а также позволяет проводить дополнительную обработку анализируемого текста.
В данной статье мы установим Pyparsing и создадим на нём наш первый парсер.