Pull to refresh

Comments 39

Звучит инновационно… В хорошем смысле этого слова.
Что-то как-то стремно заходить на ваш сайт не через ИЕ )
На словах демонстрация технологии, на деле — демонстрация только её результатов. Очень жаль.
Понимаю, ваше негодование. По понятным причинам всех деталей мы раскрыть не можем, но на вопросы по возможности готов ответить.
Я так и не понял, как его натравить на конкретный сайт, например на bn.ru?
Подключить к Maperty новый источник сейчас можем только мы — разработчики. Maperty это пока эксперимент, и полигон для проверки наших идей. Мы прежде всего работаем над технологией, чтобы можно было обрабатывать как можно более разнообразные сайты и не только про недвижимость. Штука в том, что тема может быть любой.
Давно заметил, что гугл ходит по линкам в яваскриптах, отделяет дизайн, чудом находит обновленные страницы, попадает туда, куда ничего не ведет и вообще мне кажется он стоит у меня за спиной и смотрит, что я делаю, вот уже лет 10 (:
Почти каждый день ссылочная составляющая в алгоритмах и кроулинге Google вытесняется социальным вебом.
Источник подобных сведений?..
Не нужно быть большим гением, чтобы сделать подобные выводы. Достаточно понаблюдать за приобретениями Google за последние… за всё время существование компании.
Chrome в девелоперской консоли (справедливо) жалуется что cross-domain policy Вы не учитываете. Собственно я так понял он вообще ничего не делает.

Unsafe Javascript attempt to access frame with URL www.maperty.ru/ from frame with URL maperty-robot.appspot.com/374854. Domains, protocols and ports must match.

Uncaught Error: Too much time spent in unload handler.
Под www.maperty.ru в iframe запущен робот. Робот живет на домене maperty-robot.appspot.com, на котором также находится прокси. URL, который вы указали, это URL страницы одного из агентств недвижимости, которую робот загрузил через прокси для анализа. Эта страница обращается к top. Это её право, зачем-то это им видать нужно. Но top (www.maperty.ru) находится для неё в кросс-домене. Очевидно, такой доступ запрещен. Но только роботу это нисколько не мешает. В консоли могут быть и другие сообщения, например о незакрытых тегах, но эти же сообщения вы увидите, если откроете анализируемую страницы напрямую без прокси. Здесь нет никаких проблем.
Так, ладно, попробуем по делу. Выгода от iframe+javascript сомнительная:
1) Вы не можете контроллировать ползователей
2) Вы не можете защититься от того, что пользователь Вам вернет ядовитые данные, вместо реальной обработоки целевого URLа (Снять квартиру в районе «buy viagra www_spam-site.spam» за «buy viagra» рублей в месяц).
2а) Вам вообще могут не те резльутаты возвращать
3) Вас могут (справедливо) занести в тот же Safe Browsing API за то, что во фрейме какой-нибудь вирус откроется

и главное — не видел я сайтов (особенно крупных и которые имеет смысл парсить) которые бы не были в достаточной степени видны, БЕЗ Javascript, так что в чем выгода этого метода — я вообще не понимаю. Ваш программист знает только Javascript?

Далее, Вы не можете спокойно запустить 100 компьютеров вместо того чтобы ждать 10 посетителей… а когда поток посетителей кончится — предприятию вообще конец?

И главное «на разбор одного предложения требуется минута»… я не знаю что такое «предложение», но предполагая что это «страница» — это просто жесточайшее нецелесообразное использование компьютерного времени. Тот же CURLMulti + какой-нибудь lxml позволят Вам обрабатывать сотню страниц в СЕКУНДУ на ОДНОЙ машине, что в несколько тысяч раз быстрее чем Javascript -метод.

Заходить на Ваш сайт не будь я под Linux и Chrome — было бы страшно — кто его знает чего там во фрейме начнет открываться.

А уж вирусораспространителям такой сайт просто радость — делай сайты с вирусованным Javascript тоннами, и натравливай Ваших посетителей на них.
Если я правильно всё понял, ребятам так номера телефонов проще получать (обходить защиту некоторых каталогов)
> 1) Вы не можете контроллировать ползователей

Эээ… А зачем их контролировать?

> 2) Вы не можете защититься от того, что пользователь Вам вернет ядовитые данные, вместо реальной обработоки целевого URLа (Снять квартиру в районе «buy viagra www_spam-site.spam» за «buy viagra» рублей в месяц).
> 2а) Вам вообще могут не те резльутаты возвращать

Конечно, пользователь может попытаться подменить результат. Правда произвальный текст передать не получится, но можно, например, попытаться передать в 10 раз большую цену. Но как было написано в статье, в систему встроена защита от такой ситуации. Каждая задача (разбор одной и той же страницы) отдается на выполнение разным пользователям (с разными IP-адресами), и сервер проверяет чтобы их вычисления совпадали. Робот сам выбрать задачу не может, их раздает сервер (в случайном порядке).

>3) Вас могут (справедливо) занести в тот же Safe Browsing API за то, что во фрейме какой-нибудь вирус откроется

Как опять же написано в статье, всё, что загружается во фрейм, проходит через нашу web-прокси и следовательно это можно контролировать.

> не видел я сайтов (особенно крупных и которые имеет смысл парсить) которые бы не были в достаточной степени видны, БЕЗ Javascript

vashdom-spb.ru/arenda.php — это то, что просто навскидку в голову пришло, из ресурсов, которые мы обрабатывали. Выдача данных полностью формируется с помощью AJAX. Разумеется, это не единственный пример.

> Далее, Вы не можете спокойно запустить 100 компьютеров вместо того чтобы ждать 10 посетителей

Тут даже говорить не о чем: сколько стоит поставить и обслуживать 100 компьютеров? А если 100 станет мало? Посетители не стоят ничего.

> а когда поток посетителей кончится

Если нет посетителей, то и данные обрабатывать не для кого. Ресурс же существует не для того, чтобы просто существовать.
«А если 100 [компьютеров] станет мало?»

100 компьютеров позволят Вам обрабатывать примерно 170 миллионов страниц в месяц по самой консервативной оценке. Куда Вам столько? Одного VPS для Ваших целей с ушами.

У меня вон проект есть — сканирует 20000 ресурсов ежедневно (в сумме 500 000 страниц в день — ограничение искусственное, чтобы не выходить за 200 ГБ траффика в месяц, а процессор позволяет где-то в 20 раз больше делать) — ничего на одном VPS за $20 живет.

Скажите сколько Вам нужно будет посетителей привлечь, чтобы проанализировать 15 млн страниц за месяц?

«Посетители не стоят ничего.»

Кстати не продадите миллионов десять посетителей за «ничего»?
> это просто жесточайшее нецелесообразное использование компьютерного времени

Это использование времени, когда компьютер простаивает, поэтому оно не может быть нецелесообразным, невыгодным или ещё каким-то в этом роде. К тому же, время указано сильно приблизительно и зависит от многого: от канала пользователя, производительности его машины и активности самого пользователя и в может сокращаться до нескольких секунд. А главное, что параллельно свои задачи может выполнять любое число пользователей, что позволяет масштабировать систему в очень широких пределах.

> А уж вирусораспространителям такой сайт просто радость — делай сайты с вирусованным Javascript тоннами, и натравливай Ваших посетителей на них.

Система не открывает произвольные сайты, «натравить» кого-либо на них не получится. Есть, конечно, техническая возможность взломать сайт какого-нибудь агентства недвижимости, внедрить туда вредоносный код и ждать, пока его кто-нибудь откроет. Но для этого и предназначен Google Safe Browsing API. К тому же, точно так же вы можете получить «подарочек» на любом сайте, который был взломан, в том числе и на сайте агентства недвижимости.
Как-то мутно написано, непонятно.

Можно чуть побольше подробностей: что и как вы считаете на клиенте? Естественно, без вызачи коммерческой тайны.
Почти всё. Сервер просто раздает задачи и собирает результаты. В большинстве случаев, чтобы подключить новый каталог, нужно открыть специальную страницу и просто указать его URL. Этот URL отправляется на сервер который, пускает его «по этапу»: выделяет сам каталог от прочей ненужной информации, выделяет его элементы и ссылки на них, делает много разных действий, и в конечном счете распознает о отправляет на сервер данные. Всё это делается на клиенте, но на Maperty пользователи сейчас могут наблюдать и участвовать только в последнем из перечисленных действий. Всё остальное пока закрыто.
Я, честно говоря, не понял, как это работает — я открываю страницу, у меня карта с флажками. У нас еще утро, возможно, я еще не проснулся.

А такой вопрос — как вы при такой системе можете проверить актуальность предложений? Если предложение уже исчезло, как вы об этом узнаете? И соответственно — как вы узнаете о появлении предложения, которое еще не просмотрено пользователем? По умолчанию считается, что ваш каталог не полон? Или я чего-то недопонял?
Каждый флажок соответствует одному или нескольким объектам недвижимости, информация о которых получается с помощью Javascript-робота, один из которых работает незаметно в фоне, пока вы пользуетесь картой. Добавляя новый объект в базу и, соответственно, новый флажок на карту.

По поводу актуальности: этот общий вопрос для всех поисковых систем. Информация из каталога может устареть, как устаревает страница в кэше обычного поисковика. Решение одно: чаще запускать робот.
— По поводу актуальности: этот общий вопрос для всех поисковых систем.
Я бы не назвал ваш сайт обычным поисковиком. Обычный поисковик обрабатывает миллионы сайтов, которые я сам обойти не могу. Сайтов недвижимости (или чего угодно с товарами) — конечное и очень небольшое число. В этом случае пусть известен — партнерское соглашение.
Насчет небольшого числа: я не соглашусь. Думаю, в Google Shopping свои прайс-листы выгружают тысячи (если не десятки тысяч) различных магазинов. Тут без поиска никак.

Google Shopping хороший пример партнерского соглашение, которое отлично работает. Но только каждому магазину пришлось писать конвертер своего прайс-листа в Data Feed, понятный гуглу. 1000 магазинов — 1000 раз решать одну и туже задачу. Задача, конечно, несложная, но уверен всем было бы легче, если бы поисковик мог бы сам найти и распарсить прайс-лист.
Ну, если вы хотите создать конкруренцию гуглу, это совсем другое дело. Но и тут я бы не согласился: 95% всех этих магазинов — это партнеры контор типа Амазона, которые вообще не особо нужны, путных предложений там очень мало и вообще бардак.

Мне кажется, что ваша технология подошла бы для чего-то вечного. Например, книги. Если книга вышла, она будет всегда, информация не устареет. Или запчасти для компьютера.

Я это к чему. Вот, например, у меня есть магазин и три партнерские программы от поставщиков фильмов. Я загрузил три прас-листа, но фильмы там называются не совсем одинаково. Еще хуже с комплектующими для компа (у меня был опыт). Как мне определеить, что эти три фильма — одно и то же? Был бы сервиз, в который я бы посылал название фильма, а он бы возвращал как бы его нормальзованное имя (а еслии с подробностями, так вообще сказка), к которому я могу его привязать раз и навсегда.

Вообще каталоги — дело полезное.

Или если взять те же квартиры — историю продаж. Что там в этом районе? Что и когда продавалось? Может, и эта квартира уже есть в списке, а нет, то все равно интересно.

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

IMHO
Это очень простая идея, просто мне кажется, вы сильно заморочились на технологии, а не на ее применении.

Посмотрите на gracenote.com. В клиентах у них все онлайн-радио, эпл, теперь, судя по всему, гугл и т.д. и т.п. А что они делают? Да просто поддерживают каталог дисков и музыки, вот и все.
Вы добавляете задаете список сайтов, затем ваш сервер загружает исходные данные (html-код страниц) с этих сайтов, затем клиенты-роботы каталогизируют информацию, находящуюся в этих исходных данных?
Или роботы сами лезут на заданные сайты и делают всю работу?
Всю работу делают роботы. Сервер только управляет этим процессом. Вот тут я отвечал более подробно.
а как насчет парсить сайты путем использования каких нить #, Net или дельфей с браузерными компонентами? можно не компы, а сервисы/демоны запускать. хоть 1000 штук.
как видно, из общемирового опыта, если Вы хотите претендовать на звание поисковика, глобального в некотором роде, то без дата центра своего Вам не обойтись.
Автоматическое извлечение фактов из каталогов, не имеющих семантической разметки, является непростой задачей, но всё же она много проще задачи извлечения фактов из произвольного неструктурированного текста.

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

Каждый магазин выкладывает прайс в XML в соответствии с форматом прайсов их анализирует система и выдает в Yandex.Market.
На самом деле — большое дело! Но не совсем понятно что происходит если в каталоге отвратительно оформлены данные, например тематическая доска объявлений(аля гостевая книга) где посетители в свободной форме пишут объявления?
Спасибо! Сложно ответить на ваш вопрос что-то конкретное. Система может работать с любыми сколько-нибудь структурированными данными. Чем более они (данные) структурированы, тем меньше система делает ошибок. Чем данные ближе к неструктурированному тексту, тем больше нужно её (систему) обучать и тем меньше точность распознавания. На данный момент мне неизвестно ни об одной системе, способной без ошибок извлекать факты из любого текста, особенно если он написан с ошибками, сокращениями и использованием сленговых выражений.
Спасибо всем, кто откликнулся и поучаствовал в нашем эксперименте! Вот, что получилось:

За сутки Maperty был открыт 1259 раз, из них 81 раз Internet Explorer'ом. Задача стояла обработать около 10 тысяч страниц (10 тысяч предложений объектов недвижимости). Треть (может чуть больше) этих страниц была обработана как минимум раз. Напомню, что во избежание подлога/ошибки, прежде чем попасть на карту, каждая страница должна быть обработана несколько раз. В результате на карту попало 916 маркеров (чуть более тысячи объектов недвижимости).

Хотя хабрэффект и не оправдал наших ожиданий (мы рассчитывали на куда большее число посетителей), и обработать получилось только десятую часть того, что планировалось, но результатами эксперимента мы довольны. Так как мы не вышли за бесплатные квоты App Engine, то есть обработка более 3 тысяч страниц (умноженная на число повторений) не стоила нам ни цента.
Зачем акцентировать внимание на том что это не стоило вам ни цента (и в топике и в комментах несколько раз упоминается), такое ощущение, что вы используете хабрачеловеков как бесплатных болванчиков для пополнения вашей базы.
Итог:
— довольно очевидная идея
— мутное описание реализации
— неудобный сервис получил 1259 посещений и 916 халявных маркеров на карту
умер? что случилось? идея то не плохая
Sign up to leave a comment.

Articles