С нами с 06.02.03
Сообщения: 209
Рейтинг: 66
|
Добавлено: 12/07/11 в 14:33 |
Привет
Есть задача написать несколько универсальных регулярных выражений для граба первой топовой тумбы с сайтов трейдеров для создания тумбового топа.
Может, у кого готовое есть, уже писал для своих нужд?
Трейдпульс вроде умеет это делать, но регулярные выражения оттуда не достать ввиду закрытого кода...
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 12/07/11 в 15:59 |
Я писал такую грабилку для тубов с год назад - как раз топовые N тумб выбрать, создать дампы. Универсальных решений нет, но вроде как неплохие результаты, десятками сиджетубы ворошит. Возможно код ембеда выцеплять. Интеграция со Стримом есть (хотя она дело такое, что сегодня работает, а завтра - как у Душика настроение будет). Ниши/категории учитывает.
Стучись, если тебе такой комбайн нужен
|
|
|
|
С нами с 06.03.11
Сообщения: 281
Рейтинг: 206
|
Добавлено: 12/07/11 в 16:14 |
Была сходная задача, мозговой штурм про регулярки как универсального решения ничего не дал. А помогла вот такая штучка: http://sourceforge.net/projects/simplehtmldom/
Но вот такой вариант почти идеален(пишу по памяти, могут быть ошибки):
<a .+?>[^<>]*?<img .*?src=['"](.+?/.+?/.+?\.jpg)['"].*?>[^<>]*?</a>
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 12/07/11 в 16:25 |
bari, там проблема не только в том, чтобы выделить картинки. Имидж из страницы выцепить хоть через DOM, хоть через регулярки - задача одинаково простая (хотя нормальные пацаны регулярки не используют). Сам я, к примеру, HTML::Parser использовал для этого. Simple HTML DOM все-таки тормоз, да и нафиг PHP использовать на чем-то, где скорость важна (но это чисто мое мнение).
Проблема в том, чтобы выцепить именно тумбы, а не произвольные имиджи/элементы дизайна. И вот тут все становится куда интереснее. Я, к примеру, эту задачу решал статистическим анализом всех имиджей на странице - то есть идея понятна, что у тумб URLы наиболее похожи, ведут себя похожим образом, рядом с ними - подписи и тп. Но вот выцепить это дело - совсем не так просто, я даже уже сам с ходу не вспомню, как я там выкручивался, но как-то работает до сих пор, как мне известно ))))
Пардон, если выглядит, что я что-то назойливо рекламирую (может, и не без того), но задача и вправду не так проста. Хотя могу что-то не понимать.
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 12/07/11 в 16:37 |
Dr.Syshalt писал: | хотя нормальные пацаны регулярки не используют |
Это почему?
А вылавливать, кмк, достаточно по хрефу. У 95% сиджеев там сидит урл, либо просто кодированный, либо на базе 64.
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 12/07/11 в 16:44 |
gimcnuk писал: | Это почему? |
Можно я тебя к кому-то, кто это уже объяснял, отошлю, чтоб тут не разводить на 10 страниц разговор?
http://stackoverflow.com/questions/1732348/regex-match-open-tags-ex
ained-tags
Один из ответов
Цитата: | While it is true that asking regexes to parse arbitrary HTML is like asking Paris Hilton to write an operating system, it's sometimes appropriate to parse a limited, known set of HTML. |
А тут речь идет как раз о том, что парсер должет быть как можно более универсальным
Цитата: | А вылавливать, кмк, достаточно по хрефу. У 95% сиджеев там сидит урл, либо просто кодированный, либо на базе 64. |
Еще так же могут выглядеть ссылки на другие сиджи, например. В элементе дизайна тоже может быть href и там, о сюрприз, будет URL. Что еще может быть в href?
|
|
|
|
С нами с 06.03.11
Сообщения: 281
Рейтинг: 206
|
Добавлено: 12/07/11 в 16:50 |
gimcnuk писал: | У 95% сиджеев там сидит урл, либо просто кодированный, либо на базе 64 |
И чо? (с) Как регуляркой понять что урл кодирован? Там жеш рандом почти.
Есть еще мультинишевые сиджи, там сидит сцыль на категорию.
Самое главное - надежно выцепить имидж по минимальному кол-ву фильтров.
|
|
|
|
С нами с 06.03.11
Сообщения: 281
Рейтинг: 206
|
Добавлено: 12/07/11 в 17:10 |
Dr.Syshalt писал: | Simple HTML DOM все-таки тормоз, да и нафиг PHP использовать на чем-то, где скорость важна (но это чисто мое мнение) |
Ну пишем на перле, получаем 1.37 секунды вместо 2.19 на ПХП, радуемся. Получаем пачку проблем что перла на хосте у заказчика не оказалось по причине: ... тут длинный список вариантов... Переписываем под "великий всюду стоящий". Profit!?
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 12/07/11 в 17:20 |
bari писал: | Ну пишем на перле, получаем 1.37 секунды вместо 2.19 на ПХП |
Скорее ближе к 30 минутам vs 50 минут на хорошей задаче ;) Ну, может не так фатально (поскольку там не только в парсинге время тратится), но ты понял, о чем я. Если там несколько десятков сиджей в списке + в каждом N категорий...
Цитата: | Получаем пачку проблем что перла на хосте у заказчика не оказалось по причине |
Ты хоть раз на живом сервере бывал у того самого заказчика, или просто теоретизируешь?
Назови мне хоть одну OS, где нет perl как обязательного элемента. Ну, кроме винды.
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 12/07/11 в 17:30 |
Dr.Syshalt писал: |
Еще так же могут выглядеть ссылки на другие сиджи, например. В элементе дизайна тоже может быть href и там, о сюрприз, будет URL. Что еще может быть в href? |
bari писал: | Как регуляркой понять что урл кодирован? Там жеш рандом почти |
Ссылки на другие сиджи имеют другой формат, в них отсутствует http. Кодированный через base64 урл будет иметь соответственно aHR0c, не рандом.
|
|
|
|
С нами с 06.03.11
Сообщения: 281
Рейтинг: 206
|
Добавлено: 12/07/11 в 17:35 |
Dr.Syshalt писал: | Назови мне хоть одну OS |
При чем тут ОС, про хостинг речь.
И нее надо мне про перл - больная тема, загубленный язык, на котором довелось попрограммить с пяток лет точно, даже не помню сколько именно, постоянно путаюсь в показаниях Короче - до.уя. Да, можно и сейчас шедеврить на нем, но есть время собирать камни, а есть время их разрасывать. Перловка - не вариант уже, типа латыни.
|
|
|
|
С нами с 06.03.11
Сообщения: 281
Рейтинг: 206
|
Добавлено: 12/07/11 в 17:44 |
gimcnuk писал: | Ссылки на другие сиджи имеют другой формат, в них отсутствует http. Кодированный через base64 урл будет иметь соответственно aHR0c, не рандом. |
Все, либо почти все, ссылки с тумб ведут на аут скрипт, параметры его, в общем случае - не известны. Кодировка тоже не имеет формальных признаков, в общем случае, по крайней мере ее в регулярке не отобразить. Сидж скриптов вообще сколько в широком употреблении? Я знаю минимум семь.
aHR0c - это что?)
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 12/07/11 в 18:01 |
gimcnuk писал: | Ссылки на другие сиджи имеют другой формат, в них отсутствует http. |
Ты опять делаешь какое-то предположение, которое обязательно должно исполняться, чтобы все работало.
Вот тут, например, будет работать
http://pigstube.com/
А что вот с этими, например, делать?
http://www.beatmybox.com/
http://www.lustporntube.com/
Или вот тут?
http://streamretro.com/
Как ты им морды распарсишь, чтобы добраться хотя бы куда надо, до галер? А в последнем случае - там и в галерах сам видишь, что. Кстати - на тумбы с линками на другие сиджи обрати внимание.
bari писал: | При чем тут ОС, про хостинг речь. |
Ну хоть один хостинг покажи, где на дедике или VPS нету perl. Более того - PHP часто ставить самому приходится. А perl уже там. Всегда.
Короче, вы хоть до упаду тут спорьте, я просто смысла не вижу спорить с фантазиями.
|
|
|
|
xxx
С нами с 17.10.02
Сообщения: 1355
Рейтинг: 744
|
Добавлено: 12/07/11 в 20:32 |
да, полно вариантов.
я делаю общей функцией, если не работает -
пишу ручками условия - под каждый сидж
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 13/07/11 в 15:58 |
bari писал: | Все, либо почти все, ссылки с тумб ведут на аут скрипт, параметры его, в общем случае - не известны. Кодировка тоже не имеет формальных признаков, в общем случае, по крайней мере ее в регулярке не отобразить. Сидж скриптов вообще сколько в широком употреблении? Я знаю минимум семь.
aHR0c - это что?) |
Это http в base64. И именно их (http и aHR0c) можно отлавливать в УРЛ. А какой формат у аут-скрипта и не важно.
Dr.Syshalt: в первом, втором и третьем случае тумбу вообще нет смысла отлавливать, так как нет общего страницы с популярными тумбами, по категониям разбросаны. Владельцу в любом случае придётся конкретизировать, откуда брать.
В третьем - да, наличие тумбового топа портит дело.
Хорошо, твой метод будет работать в 99%, мною предложенный в 90%. С другой стороны: пара строк против комбайна.
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 13/07/11 в 16:10 |
gimcnuk писал: | в первом, втором и третьем случае тумбу вообще нет смысла отлавливать, так как нет общего страницы с популярными тумбами, по категониям разбросаны. Владельцу в любом случае придётся конкретизировать, откуда брать.
В третьем - да, наличие тумбового топа портит дело.
Хорошо, твой метод будет работать в 99%, мною предложенный в 90%. С другой стороны: пара строк против комбайна. |
Ты забываешь, что "комбайн" еще позволяет и с морды произвольного сиджа нужные категории вытащить. Просто указываешь список сиджей и список категорий, которые тебя интересуют. А вручную на 50 сиджах вытащить списки всех галер, протыкав и прокопипастив все линки на все галеры в нужных категориях - это как бы задача для ну очень терпеливых ;)
Ты сам бы попробовал написать, потом бы мне рассказывал про 90%...
|
|
|
|
С нами с 01.04.07
Сообщения: 4378
Рейтинг: 2970
|
Добавлено: 13/07/11 в 17:13 |
Dr.Syshalt писал: | Ты забываешь, что "комбайн" еще позволяет и с морды произвольного сиджа нужные категории вытащить. |
Сложно забыть то, чего в глаза не видел.
Ты бы как раз и продемонстрировал, как твой комбайн с вышеуказанными сайтами справляется.
|
|
|
|
Чингачгук, вождь красноглазых
С нами с 14.05.04
Сообщения: 4744
Рейтинг: 1824
|
Добавлено: 13/07/11 в 17:19 |
gimcnuk писал: | Сложно забыть то, чего в глаза не видел.
Ты бы как раз и продемонстрировал, как твой комбайн с вышеуказанными сайтами справляется. |
Кому надо - продемонстрирую. А так вышеуказанные сайты - это из набора стандартных тестов, на которых я алгоритм обкатывал. Но спасибо, что поправил - в самом деле, я не учел такого момента
|
|
|
|
С нами с 29.04.09
Сообщения: 295
Рейтинг: 72
|
Добавлено: 19/07/11 в 13:14 |
Dr.Syshalt писал: |
Ну хоть один хостинг покажи, где на дедике или VPS нету perl. Более того - PHP часто ставить самому приходится. А perl уже там. Всегда.
|
Хочу добавить что в отличии от пхп скрипты на perl как правило не чуствительны к версии perl будь там 5.8 или 5.12 и новые фичи,такие как ~~ проверка на вхождение элемента в массив используются пока очень редко, а любую необходимую библиотеку можно доставить через cpan без всяких apt-get или yum ну или на крайняк просто скачать и подключить через
Код: [развернуть] |
use FindBin;
use lib "$FindBin::Bin/...
|
ЗЫ Оно еще и памяти меньше потребляет кстати ...
|
|
|
|