Парсинг AJAX сайтов

valkiria77

Есть задача парсинга сайтов на которых нужная инфа тащится при помощи AJAX, (собственно, как почти во всем современном вебе :( есть ли готовые библиотеки для Java которые бы эмулировали JS, или, возможно, нужно копать в другом направлении, чтобы решить задачу?

VitMix

или, возможно, нужно копать в другом направлении, чтобы решить задачу
Возможно, будет лучше исследовать HTTP запросы, которые JS посылает своему серверу, и делать такие же самому.

SergeRRRRRR

Глянь selenium, там вроде можно все это эмулировать. На выходе как раз ява-класс получается.

6yrop

собственно, как почти во всем современном вебе
современный это тот, который не индексируется поисковиками?

yroslavasako

современный это тот, который не индексируется поисковиками?
ну вот блогпост, например, такой. Но он как-то индексируется поисковиками. Некоторые движки вообще не имеют представления об ином способе динамичной генерации контекста кроме ajax.

zorin29

ну вот блогпост, например, такой. Но он как-то индексируется поисковиками. Некоторые движки вообще не имеют представления об ином способе динамичной генерации контекста кроме ajax.
Честно говоря, не понял, что за мысль ты пытался донести до нас.

yroslavasako

Было высказано предположение, что некоторые современные сайты передают контент через ajax и без java script его не увидеть. Было высказано встречное возражение, что подобный сайт не виделся бы поисковиком. Я привёл пример сайта (blogpost который индексируется поисковиком, но при этом простой пользователь без ajax ничего на нём не увидит.
Дополнительно могу сказать, что вижу как минимум два механизма решения озвученной проблемы.
1. Некоторые поисковики всё-таки умеют читать яваскрипт
2. Для поисковика можно предоставлять привилегированный доступ

SergeRRRRRR

Гугл уже вроде норм индексирует аяксовую часть, а раньше да - используешь аякс (gwt, vaadin) можешь забыть про индексацию.

YUAL

блогспот принадлежит гуглу. я думаю в последнюю очеред при написании интерфейсе на аяксе они думали "а как же его будут индексировать поисковики".

zorin29

Дополнительно могу сказать, что вижу как минимум два механизма решения озвученной проблемы.
1. Некоторые поисковики всё-таки умеют читать яваскрипт
2. Для поисковика можно предоставлять привилегированный доступ
Как мне кажется, 1 не верно в общем случае.
Что такое привилегированный доступ, я не знаю. Возможно, ты имеешь в виду, что уважающие себя сайты (желающие индексироваться поисковиками) предусматривают тот или иной метод отдачи AJAX-содержимого краулеру в виде обычных веб-страничек. С этим я согласен.
Например, можешь посмотреть на ссылку, которую в этом треде дают уже второй раз.

Realist

Поднимай браузер, жди пока он отрисует сайт и требуй с него содержимое.
Смотри у каких браузеров/движков есть API
посмотри webkit

erotic

Пару лет назад слышал доклад от какой-то компании, люди для этого с Firefox собирались, он выполнял весь рендер и помимо готового DOM рассказывал еще и о физическом расположении элементов друг относительно друга на экране.

Commandor

Можно и без браузера, только движек
http://phantomjs.org/

6yrop

Можно и без браузера, только движек
http://phantomjs.org/
под наиболее используемые браузеры сайты тестируются, а под эту хрень вряд ли, и все проблемы будешь разгребать сам

yroslavasako

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

6yrop

это не про наш мир, стандарт это стандарт, а имплементация это ближе к реальности, работает именно имплементация, а не стандарт.

Dimon89

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

Dasar

ну вот что мешает всем этим пидорасам писать не под браузеры, а под стандарт?
Тоже самое, что мешает людям писать на форуме предложения с большой буквы и ставить знаки препинания.
В обоих случаях, поддерживать стандарт хлопотно, и кажется, что соответствие стандарта никому не нужно и это выброшенные на ветер усилия.
ps
т.е. вопрос скорее должен быть "Что можно сделать, чтобы стандарты было выгодно поддерживать?", а не "Почему люди отказываются от поддержки стандартов?". Ответ на второй вопрос тривиальный: для исполнителей так удобнее.

igor12375

Тоже самое, что мешает людям писать на форуме предложения с большой буквы и ставить знаки препинания.
В обоих случаях, поддерживать стандарт хлопотно, и кажется, что соответствие стандарта никому не нужно и это выброшенные на ветер усилия.
неудачное сравнение: отсутствие больших букв и умеренные пропуски пунктуации не влияют на восприятие текста, т.к. в сосуществующем устном стандарте эти понятия отсутствуют или не выражены в том же объеме

yroslavasako

"Почему люди отказываются от поддержки стандартов?"
Ну так я сразу же и дополнил вопрос. Почему с одной стороны люди (исполнители) отказываются от поддержки стандарта, а с другой стороны люди (потребители) готовы терпеть такое состояние дел?
Вопросы взаимосвязаны, и второе во многом определяет первое.
Или вот другой пример.
Почему, например, люди (покупатели) продолжают ходить в магазины, где приобрели испортившуюся продукцию, не получив при этом никакой компенсации. Почему нужна вообще сторонняя организация вроде РосПотребНадзора (у нас он взятками затыкается элементарно, к сожалению) для чмырения нечестных на руку продавцов, когда, организовавшись, потребители способны наказать таких продавцов гораздо сильнее?

Dasar

неудачное сравнение: отсутствие больших букв и умеренные пропуски пунктуации не влияют на восприятие текста, т.к. в сосуществующем устном стандарте эти понятия отсутствуют или не выражены в том же объеме
Сравнение как раз удачное и обоснование такое же: сайты отходят от поддержки формального стандарта js, т.к. в существующем стандарте де факто по взаимодействию сайтов и браузеров такое допускается.
ps
соответствие при этом 1 в 1:
формальный стандарт на грамматику русского языка <-> формальный стандарт на js
неформальный стандарт де факто на разговорную речь в письменной форме <-> неформальный стандарт де факто на взаимодействие сайтов и браузеров

yroslavasako

Речь не стандартизируется. Основное назначение естественного языка - общение между людьми. Люди в отличие от механизмов имеют свой собственный уникальный механизм познания мира и распознавания речи других людей, а также конвертации распознанных понятий, присущих передающей стороне, в понятия, доступные принимающей. Поэтому естественный язык никогда не бывает застывшим и меняется, идя сквозь историю весьма причудливым путём.
Механизмы познания, доступные технике, принципиально различаются. И поэтому для них не подходит путь, пригодный для органической формы жизни. Технике вовсе не обязательно повторять все ошибки, присущие стохастической эволюции. Вы ведь никогда не видели, чтобы в автомобиле диаметр болтов непрерывно рос в течении жизни автомобиля как растут ветки на дереве? Тогда зачем сравнивать органику и технику?
Все эти игрушки с убеганием и возвращением обратно к открытым стандартам всего лишь следствие попыток многих компаний добиться сверхприбылей, заключив пользователей и сторонних разработчиков в vendor lock-in (разумеется, объяснив им, что это для их же блага, благо что население у нас вполне внушаемое).

Dasar

Почему, например, люди (покупатели) продолжают ходить в магазины, где приобрели испортившуюся продукцию, не получив при этом никакой компенсации.
Потому что такое поведение выгодно для отдельного покупателя. Компенсация не покрывает затраты на ее требование. Смена магазина на более отдаленный и т.д. также не выгодна.
И эта проблема решается увеличением компенсации и добавлением посредника, который берет на себя выставление претензии.

yroslavasako

Потому что такое поведение выгодно для отдельного покупателя.
Это локальный максимум. Для одного покупателя - это выгодно. А для покупателей в целом - вредно.

igor12375

нет же, отклонение от письменного стандарта, о котором шла речь, не влияет на восприятие текста, т.е. любой читающий с большой вероятностью воспримет те же образы
отклонение от стандарта js для части аудитории просто приведет к ошибке или другому неожиданному результату

Dasar

Все эти игрушки с убеганием и возвращением обратно к открытым стандартам всего лишь следствие попыток многих компаний добиться сверхприбылей, заключив пользователей и сторонних разработчиков в vendor lock-in (разумеется, объяснив им, что это для их же блага, благо что население у нас вполне внушаемое).
Ты передергиваешь, перескакивая от конфликта между формальным стандартом vs стандарт де факто к конфликту открытые стандарты vs закрытые стандарты.
Переход от формальных стандартов к стандартам де факто - это норма для эволюционирующей системы. В целом, это следует из Геделя о неполноте: формальный стандарт всегда содержит и будет содержать туманные лакуны, о которых приходится договариваться по месту, что и дает толчок стандарту де факто.
Механизмы познания, доступные технике, принципиально различаются. И поэтому для них не подходит путь, пригодный для органической формы жизни. Технике вовсе не обязательно повторять все ошибки, присущие стохастической эволюции. Вы ведь никогда не видели, чтобы в автомобиле диаметр болтов непрерывно рос в течении жизни автомобиля как растут ветки на дереве? Тогда зачем сравнивать органику и технику?
Неверно. Механизмы все те же самые. Как только у техники появляется возможность делать адаптацию (выбор скорости в модеме, выбор протокола при общении клиента и сервера и т.д. т.к. сразу начинают работать все те же самые закономерности, что и для органики. Пример с болтами не удачный, потому что в данном случае техника никакой адаптации не делает - всё уже предрешено до этого.

Dasar

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

Dasar

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

yroslavasako

Переход от формальных стандартов к стандартам де факто - это норма для эволюционирующей системы. В целом, это следует из Геделя о неполноте: формальный стандарт всегда содержит и будет содержать туманные лакуны, о которых приходится договариваться по месту, что и дает толчок стандарту де факто.
Человек хочет при общении с другим человеком выражать произвольные понятия. Для компьютера такие цели недоступны. Зато компьютер способен быстро и точно проводить расчёты. Было бы странно отказываться от точности, приняв все недостатки человеческой модели общения, ради недостижимой цели повторить человека.
Или теорема геделя не верна, или ты её применяешь неправильно, потому что есть множество примеров существования и нормального функционирования формальных стандартов. Начнём с TCP/IP, ANSI C и zlib.

igor12375

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

Dasar

Начнём с TCP/IP, ANSI C и zlib.
Плохие примеры. Под каждый из них расширений де факто больше, чем размер самого стандарта.
Зато компьютер способен быстро и точно проводить расчёты. Было бы странно отказываться от точности, приняв все недостатки человеческой модели общения, ради недостижимой цели повторить человека.
При взаимодействии нескольких независимых элементов важна гибкость, а не просто точность (т.к. независимые элементы меняются с разной скоростью).
Например, браузер должен уметь поддерживать все версии стандартов html/xhtml(и draft-ов желательно тоже разные виды кодировки и т.д., что реальнее сделать через один гибкий парсер, чем через десяток точных парсеров.

yroslavasako

Например, браузер должен уметь поддерживать все версии стандартов html/xhtml(и draft-ов желательно тоже
давай так. В моих понятиях "поддерживать стандарт" - это следовать ему. А что это значит для тебя?
P.S. gcc поддерживает кучу стандартов и даже немного драфтов. Но при этом по-прежнему выдаёт ошибку в ответ на код, не соответствующий стандарту

yroslavasako

Переход от формальных стандартов к стандартам де факто - это норма для эволюционирующей системы.
Смотри. Возьмём какое-нибудь правовое государство. Его правовая система эволюционирует, для этого его законодательная система принимает новые законы. Но при этом закон един и для всех! И населению это нравится, вот парадокс! Так что стандарты де факто не являются нормой для данной эволюционирующей системы

Dasar

Его правовая система эволюционирует, для этого его законодательная система принимает новые законы. Но при этом закон един и для всех!
Опять ты перескакиваешь, теперь с конфликта "формальный стандарт vs стандарт де факто" на конфликт "стандарт один для всех vs стандарт разный под разные группы".
Если продолжить твой пример с правовой системой и взять США, то там право основано на стандарте де факто (благодаря прецедентному праву эволюционирует и едино для всех.
Если вернутся к браузерам и сайтам, то в данном случае тоже есть один стандарт де факто для всех, а то, что его не поддерживает http://phantomjs.org/ это лишь его проблемы.
Так что стандарты де факто не являются нормой для данной эволюционирующей системы
Формальный стандарт может быть нормой только для очень-очень жесткой централизованной системы, когда каждая самая мельчайшая мелочь утверждается в едином центре и за каждое мельчайшее отклонение вменяются суровые санкции. Во всех остальных случаях нормой является стандарт де факто

yroslavasako

"формальный стандарт vs стандарт де факто" на конфликт "стандарт один для всех vs стандарт разный под разные группы".
Я человек практичный. Если уж тебе так хочется называть это стандартом де факто, то пусть так и будет, что спорить о терминологии. Главное чтобы он был один для всех, что в случае с браузерами и сайтами не наблюдается.
Оставить комментарий
Имя или ник:
Комментарий: