С нами с 24.10.06
Сообщения: 169
Рейтинг: 147
|
Добавлено: 01/11/06 в 14:06 |
Сабж. Потребовалось написать простенький граббер тумб на PHP, решил поискать относительно готовые решения. Нашел упоминания (его самого так и не смог найти) о неком классе HTMLParser, который вроде как, и предназначен для разбора HTML-страниц.
Кто-нибудь имел с ним дело? Подскажите плз. ссылку на него и документацию. Или я вообще не в ту степь пошел?
Если так, то может порекоммендуете, какие-то подходящие решения? По большому счету все что нужно это выдирать из страницы теги <img>. Впринипе я и сам подобное могу написать, но наверняка же есть какие-то готовые решения, так что зачем изобретать велосипед. :-)
Всем рейтинг!
|
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 01/11/06 в 15:04 |
Понимаешь, если ты действительно можешь это написать, то поймёшь, что никакой HTMLParser тебе не нужен, а если нет - то он так и так тебе не нужен ![icon_smile.gif](/template/images/smiles/icon_smile.gif) (сори за неинформативность, пиши сам, одним словом)
|
|
|
|
С нами с 07.01.04
Сообщения: 2868
Рейтинг: 1536
|
Добавлено: 01/11/06 в 15:14 |
Если хочется разбирать хтмл, то лучше через http://php.net/dom
Но вообще тут регэксп в одну строчку все решит.
|
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 01/11/06 в 18:17 |
kink писал: | Но вообще тут регэксп в одну строчку все решит. |
+1 Время на понимание (дума || некого класса) > время на написание 1 регэкспа
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 02/11/06 в 00:46 |
WeRock писал: | Потребовалось написать простенький граббер тумб на PHP, решил поискать относительно готовые решения. |
Ты не представляешь сколько там всяких нюансов ![icon_smile.gif](/template/images/smiles/icon_smile.gif) . WeRock писал: | Подскажите плз. ссылку на него и документацию. Или я вообще не в ту степь пошел? |
Смотри на phpclasses.org
|
|
|
|
+ + +
С нами с 24.07.05
Сообщения: 169
Рейтинг: 88
|
Добавлено: 02/11/06 в 09:48 |
|
|
|
|
Genuine Quality
С нами с 28.08.05
Сообщения: 652
Рейтинг: 910
|
Добавлено: 02/11/06 в 23:00 |
+1 за регексп, поскольку парсеры не всегда справляются с корявыми ручками вэбдизайнеров
|
|
|
|
С нами с 26.02.03
Сообщения: 2366
Рейтинг: 987
|
Добавлено: 03/11/06 в 00:09 |
Ага, забудут тег закрыть или напишут с ошибкой, в браузере все нормально отражается, а скрипт начинает ругаться, что не может ничего найти.
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 03/11/06 в 01:29 |
я себе класс парсера только на определенные теги месяца 2 отлаживал, оказывается есть ну просто ОГРОМНОЕ колличество вариантов написания одной и той же конструкции
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 03/11/06 в 04:35 |
Цитата: | я себе класс парсера только на определенные теги месяца 2 отлаживал, оказывается есть ну просто ОГРОМНОЕ колличество вариантов написания одной и той же конструкции |
А что за теги обсуждаем? <form.*<\/form> ? ;)
Так их и не надо закрывать! тут прикол как раз в том, чтоб парсер расшибся в доску, пытаясь понять почему они открываются, но не закрываются ![icon_smile.gif](/template/images/smiles/icon_smile.gif) )) или закрываются сразу- же после открытия ;)
|
|
|
|
www.phpdevs.com
С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105
|
Добавлено: 03/11/06 в 04:38 |
Какой нахрен form ? Тут про тумбы идет речь, или у кого что болит, тот про то и говорит
|
|
Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.
|
0
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 03/11/06 в 04:40 |
Цитата: | Какой нахрен form ? Тут про тумбы идет речь, или у кого что болит, тот про то и говорит |
![icon_smile.gif](/template/images/smiles/icon_smile.gif) сори, совсем загнался на нервной почве.
Кто за то чтобы казнить за ошибки в синтаксисе HTML ?
|
|
|
|
+ + +
С нами с 24.07.05
Сообщения: 169
Рейтинг: 88
|
Добавлено: 03/11/06 в 04:55 |
Код: |
$html_date = implode ('', @file( $url ) );
preg_match_all("!<a[^>]+href *= *\"?'?([^ \"'>]+)\"?'?[^>]*><img[^>]+src *= *\"?'?([^ \"'>]+)\"?'?[^>]*></a>!is", $html_date, $match);
|
в итоге в match у тебя будет списко найденных конструкций <a href=...><img src=....></a>
что прекрастно и работает на большенстве tgp, cj и т.д.
|
|
|
|
С нами с 16.04.05
Сообщения: 754
Рейтинг: 352
|
Добавлено: 03/11/06 в 05:10 |
Цитата: | в итоге в match у тебя будет списко найденных конструкций <a href=...><img src=....></a>
что прекрастно и работает на большенстве tgp, cj и т.д. |
парень, ты крут! ты освоил язык рег-экспов! ;)
А массив - то зачем брал и затем объединял?
Код: |
$source = file_get_contents($url);
|
Поверь мне, это будет работать быстрее....
А вообще, счас говорим об ошибках в html, из - за которых нормальный парсинг невозможен. Твой регэксп так - же свалится, забудь овнер закрыть какой - нить тег.
|
|
|
|
+ + +
С нами с 24.07.05
Сообщения: 169
Рейтинг: 88
|
Добавлено: 03/11/06 в 05:51 |
Sirgey писал: | парень, ты крут! ты освоил язык рег-экспов! ;) |
да, и в отличии от некоторых не завидую другим по этому поводу =)
Код: | $source = file_get_contents($url); |
Sirgey писал: | Поверь мне, это будет работать быстрее.... |
вопрос стоял не в СКОРОСТИ работы, посмотри название топика если не заметил
Sirgey писал: | А вообще, счас говорим об ошибках в html, из - за которых нормальный парсинг невозможен. Твой регэксп так - же свалится, забудь овнер закрыть какой - нить тег. |
большенство cj и tgp генерятся всетаки скриптом и там более менее "нормализованно" все по коду, хотя этот рег и так жрет достаточно "прозрачные" конструкции
|
|
|
|