@skyfly2010

Как организовать парсинг iframe при помощи javascript?

Доброй ночи, дорогие друзья, появилась необходимость спарсить контент iframe. Просмотреть исходный код документа в iframe можно через любой браузер, а вот спарсить что-то пока не получилось. Извиняюсь, что возможно многие из моих кодов не корректны, я только занялся изучением javascript.
Итак, сейчас имеем:
var iframe = document.getElementById('happyFrame'); 
var frameDocs = iframe.contentDocument || iframe.contentWindow.document;
var link = frameDocs.getElementsByClassName('name');
alert(link.length);

В данном случае, alert выводит 0. В то время, как в него должна попасть ссылка.
Класс с именем 'name'. в коде iframe только один.

Пример ссылки, хреф которой нужно достать:
<div class="item_info">
 <a href="http://yyxxhh.com/u1jj12232lj" class="name" target="_blank">Мялка-палка</a>
</div>
  • Вопрос задан
  • 4815 просмотров
Решения вопроса 1
mourr
@mourr
Passionate JS developer
Как гласит документация по iframe.contentDocument
Because of security reasons, the contents of a document can be accessed from another document only if the two documents are located in the same domain.

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

Однако если хочется и очень-очень нужно - можно сделать кроссдоменный ajax-запрос на адрес фрейма при помощи YQL (как именно, можно подробнее узнать в этой статье) , и удобно спарсить нужную инфу

Вот например по-быстрому набросаный пример - парсит из фрейма на чужом домене имя последнего добавленого персонажа и соотвественно картинку с ним output.jsbin.com/todetucede
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
nekt
@nekt
программист
Если в iframe находится контент с другого домена, то получить к нему доступ извне достаточно проблематично - там достаточно злобные настройки безопасти.

Пример статейки с их описанием habrahabr.ru/company/mailru/blog/210050

В общем случае проще парсить документы на серверной стороне.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы