LINUX.ORG.RU

HTML parsing


0

0

И снова здравствуйте. Скажите, пожалуйста, есть ли какие методы для парсинга HTML страниц? Интересует не только и не столько преобразование HTML в дерево вида: [<html>] => [<head>] => [<title> = 'Some title'] и т.д. сколько парсинг для получения содержимого страницы. То есть, например, я хочу получать курс валют с rbc.ru, или грабить заголовки свежих постингов с какого-то сайта (который не предоставляет никакого RSS). Есть ли такие решения? Если да, то ткните, пожалуйста, носом в доки (алгоритм) и/или подобные программы/скрипты (предпочтительно на C или PHP, но не принципиально).

Заранее благодарен.


Ответ на: комментарий от SatanClaus

Я бы даже сказал, что слишком далеко... =/

xlex
() автор топика
Ответ на: комментарий от SpaD

Должно быть возможно... Только вот не знаю с какого конца подступиться...

xlex
() автор топика

на си ты это сделаешь, но единственный выигрыш - скорость - не важна, т.к. таймаут всегда в сотни раз выше, чем скорость работы скрипта. в PHP хреновые регекспы.

Выдирать курсы валют c www.rbc.ru на перле в одну строчку можно так:

perl -MLWP::Simple -e '$x.=get "http://www.rbc.ru"; do{$a=$1;$a=~s!<.*?>|\&nbsp;!!ig; print $a }if $x=~m!<TR>.*?USD ЦБ РФ(.*?)</TR>!igs'

эту строку написать - 5 минут..

еще, онлайновый парсер новостей - по моему нет такого, хотя что-то было на цпане. Проще самому, _зная_ регекспы...

vilfred ☆☆
()
Ответ на: комментарий от vilfred

Thanks за совет про языки. Как я понимаю, ничего универсального нет и каждый раз надо писать свой скрипт? А что посоветуешь по регэкспам и по какому слову в цпане искать?

xlex
() автор топика
Ответ на: комментарий от xlex

"Как я понимаю, ничего универсального нет и каждый раз надо писать свой скрипт?" вообще да, т.к. если дизайнеры сайта изменят хоть чуть чуть html код странички, то тогда сишную программу изменить значительно сложнее чем php или perl'овую.

по регекспам книжку лучше Advanced Programming in Perl или справочник perl Стивена Холзнера, там глава была про регекспы.

vilfred ☆☆
()
Ответ на: комментарий от vilfred

Ок. В PHP есть Perl-овские регеэкспы - они, по идее, должны быть лучше чем POSIX-овские, то есть такие же как Perl-овские, можешь прокомментировать их как-нибудь?

xlex
() автор топика
Ответ на: комментарий от xlex

ну, я php не писал... в принципе регекспы на уровне выцепить html код там есть (ибо как то нашел php'шное решение даже :). Может быть там нет конструкций вида s!(xxx)!$1?"yyy":"zzz"! или s!(xxx)\1!"blahblag"!

имхо, должно для парсинга хватить. Но где найтиописание именно php'шных регекспов - просто не знаю. (наверное google)

vilfred ☆☆
()
Ответ на: комментарий от chucha

Как я понял, он просто вытягивает содержимое одного тега или хтмл структуру, а это не совсем то, что надо.

Нужно чтобы скрипт, например, мониторил индексную страницу linux.org.ru, и при появлении новых новостей говорил - мужик, тут такие-то новые темы + тут в таких-то темах добавилось комментариев.

xlex
() автор топика
Ответ на: комментарий от vilfred

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

xlex
() автор топика
Ответ на: комментарий от SpaD

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

xlex
() автор топика
Ответ на: комментарий от xlex

Вот глянь что нашел в гугле newsgrabber php:

http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=newsgra...

newsgrabber perl:

http://www.google.com.ru/search?hl=ru&ie=UTF-8&oe=UTF-8&q=newsgra...

p.s. самому писать граббер новостей - это сложно т.к. надо описывать общие случаи, и, если писать, то надо бы через темплейты для каждого новостного сайта в отдельности.

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