LINUX.ORG.RU

На чем быстрее распарсить страничку?


0

1

www.linux.org.ru/tracker/ вот эту вот. Смотреть в браузере ее неудобно, хочется отдельное консольное окошечко в уголке монитора, где будет поток флуда.

Сейчас каждые 10 секунд дергается bash скрипт с использованием curl'а и case *масок*), чтобы выбрать нужные строки, а затем ${##вырезать} ${**нужные} данные и вывести. Но внезапно, процесс очень ресурсоемкий для CPU. Видимо из-за того, что слишком много строчек в HTML документе направляется на case.

Может, подскажете, на каком языке реализовать парсер странички эффективнее всего? И на чем это лучше сделать - какими-нибудь встроенными библиотеками, или regex'ами, или «вручную» функциями дергая данные?

★★★★★

Меня аж спазмом свело.

Бери любой язык какой знаешь, питоны/перлы какие-нибудь. Про регэкспы забудь, бери любой дом парсер.

А правильный путь - ждать апи или требовать рсс (если сможешь пробиться через заглушку администратора, hizelя).

Kalashnikov ★★★
()

Может, подскажете, на каком языке реализовать парсер странички эффективнее всего?

Я бы взял perl и парсил через libxml2. Железный, верный вариант.

Regex-ами можно ошибиться да и просто запариться их строить.

bk_ ★★
()

метрику эффективности в студию.

у тебя есть работающий баш (можеш тут его в апдейт привести) - ты желаеш уменьшить его time следовательно бери компилятор баша.

qulinxao ★★☆
()

Нагуглилась библиотека для Java jsoup

alix ★★★★
()
Ответ на: комментарий от derlafff

Ах, оно там совсем люто захардкорено

https://github.com/AlexCones/LORA/blob/master/plugins/old_tracker.sh

Вот на регекспах версия

Ну и работать будет, если совсем трекер не испоганили с тех пор, ибо на консольный клиент мы забили :)

derlafff ★★★★★
()
Последнее исправление: derlafff (всего исправлений: 1)
Ответ на: комментарий от BaBL

grep'ы и регексы

Нет, тебе кажется. Там python с libxml парсит HTML

derlafff ★★★★★
()

На чем быстрее распарсить страничку?

LISP, Haskell, SmallTalk ,Agda2, Epigram, Omega, Coq. Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм ) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут. В чем проблема-то?

anonymous
()
Ответ на: комментарий от bk_

Ага... HTML на лоре соответствует стандарту... Не смешите, пробовал парсить с помощью msxml... Ловил кучу исключений по этому поводу....

TOXA ★★
()
Ответ на: комментарий от Deleted

По сути - правильный HTML и есть ни что иное, как XML(только без волшебного тега xml) Но тут он не совсем правильный(по крайней мере был таковым, когда я пытался его вытаскивать... Основной проблемой было то, что атрибуты были без кавычек

TOXA ★★
()
Ответ на: комментарий от anonymous

Я этот коммент а неизменном виде вижу в каждой подобной теме. На лиспе любую задачу можно решить с помощью одной и той же программы?

marvin_yorke ★★★
()

Я python+libxml парсил, довольно удобно. Еще говорят какой-то beautifulsoup что-ли есть, он вроде как раз для этого дела

marvin_yorke ★★★
()
Ответ на: комментарий от TOXA

По сути - правильный HTML и есть ни что иное, как XML

4.2. В html нет необходимости закрывать теги вроде <br> и т.п. Это никак не есть XML.

Основной проблемой было то, что атрибуты были без кавычек

Это HTML, детка. Он такой, суровый и беспощадный.

Deleted
()
Ответ на: комментарий от TOXA

Ничуть, ХМЛ куда строже и различий там полно. Хтмл вообще не очень то обязан быть валидным даже. А msxml упоминать вообще стыдно должно быть.

Kalashnikov ★★★
()
Ответ на: комментарий от TOXA

msxml

libxml2

Ты пропустил ключевое отличие.

bk_ ★★
()
Ответ на: комментарий от Deleted

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

TOXA ★★
()
Ответ на: комментарий от Eddy_Em

мне теперь что, на каждое мое сообщение будут подобное писать?

естественно,ты же эпичный дядька)) слишком много наследил

amazpyel ★★★
()

Может, подскажете, на каком языке реализовать парсер странички эффективнее всего?

я на sed делал - быстро и эффективно.

а затем ${##вырезать} ${**нужные} данные и вывести. Но внезапно, процесс очень ресурсоемкий для CPU.

это ты закрутил гвоздь отвёрткой. Молодец, силён.

drBatty ★★
()
Ответ на: комментарий от Eddy_Em

// мне теперь что, на каждое мое сообщение будут подобное писать?

да.

//с возвращением.

drBatty ★★
()
Ответ на: комментарий от anonymous

LISP, Haskell, SmallTalk ,Agda2, Epigram, Omega, Coq. Делаешь пандорический захват, лифтишь в монаду, потом строишь рекурсивную схему (здесь подойдёт зигохистоморфный препроморфизм ) как монадический трансформер из категории эндофункторов, и метациклически вычисляешь результат. Любой второкурсник справится. А если делать на анафорических лямбдах — так задачка вообще на пять минут. В чем проблема-то?

проблема в том, что на Марсе холодно, и мало кислорода. Т.ч. я пока на третьей планете перекантуюсь.

drBatty ★★
()
Ответ на: комментарий от marvin_yorke

Я этот коммент а неизменном виде вижу в каждой подобной теме. На лиспе любую задачу можно решить с помощью одной и той же программы?

да. emacs называется.

drBatty ★★
()

Привет, попробуй phantomjs, к которому можно написать фильтр xpath на JavaScript. Еще есть CasperJS, вроде он еще сильнее заточен на автоматизацию скреппинга, а также автоматическое тестирование веб-интейфейсов, но я с ним не знаком...

anymouse
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.