LINUX.ORG.RU

html + parse + не наступить на грабли


0

0

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

Конкретно есть ряд страниц:

osloskop.net
emulek.com.pl
emulek.com
sharereactor.com

И им подобных. Во всех в левой части меню видим категории. Во всех кликая по этим категориям где-то в описании фильма можно найти его жанр, такой как экшн, драма и им подобные. И это и есть проблема.

Хотелось бы тул который бы все это дело высосал, пропарсил и добавил к тем кактегориям в меню слева категории найденные ним в описании фильмов и раскидал туда фильмы. Ну и гуйню к этому всему.

Я попробовал подступиться к задаче исходя из установки "до понедельника неплохо бы наклепать".

Взял первый попавшийся питоновский html парсер из стандартной библиотеки и сразу же встретился с двумя проблемами:

1. Он парсер SAX'оватый. Это очень неудобно. DOM удобней

2. Как только он натыкается на ошибку в HTML он вылетает с Exception'ом. Это липа. А что если нужная мне информация была перед вылетом?

Решил попробовать с регекспами. После нескольких написанных регекспов и обнаружению что еще надо выкликать в ABCD... и воспоминаниям о распарсивании когда-то давно другого сайта HTML регексами желание всякое пропало.

Стало понятно что задача требует несколько более осмысленного подхода. Отсюда пришло в голову:

1. html parser DOM который не вылетает на ошибках а пытается как движок браузера как-то их игнорировать

2. Итерация в нем же по выражениям XPATH

Ну и собственно что это может сделать? Например в том же питоне? Или можно еще что-то комбинировать? Может прикрутить сюда KHTML?

Хммм keep it simple stupid.

Для emulek.com.pl вроде бы закономерно:

пустой: http://emulek.com.pl/pokaz.php?akcja=show&id=1
.....
пустой: http://emulek.com.pl/pokaz.php?akcja=show&id=5763

Ну и это бы более менее согласовалось с тем что они говорят:

Pozycji: 5694

Но все таки вопрос про парсеры остается в силе хотя бы из интереса. Наверное надо использовать http://search.cpan.org/dist/HTML-Parser/ да?

dissident ★★
() автор топика
Ответ на: комментарий от ero-sennin

Отлично, доктор был в хорошем настроении и прописал похоже то что нужно. Спасибо.

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

> Но все таки вопрос про парсеры остается в силе хотя бы из интереса. Наверное надо использовать http://search.cpan.org/dist/HTML-Parser/ да?

HTML::Parser - это тоже SAX. Если нужно DOM - то HTML::TreeBuilder (там не W3C DOM, но, в общем, жить можно и даже удобно местами).

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