[JS] помощь требуется с getElements

General213

Возникла у меня следующая задачка: надо захватить картинку капчи.
На неком сайте она в коде страницы выглядит так:
<td class="lb bbg privbg" nowrap="" colspan="2">
<img id="reg_img" class="imgload bb hand" width="277" height="60" src="http://www.ag.ru/rand/?id=a7e521ea4c3d8439bd9b7de7a3371e30">
</td>

И захватывается она так:
var img = window.content.document.getElementById('reg_img');
ну или по классу можно захватить, в общем простой случай
А на другом сайте она такая:
<div class="captcha">  
<div>
<img src="/captcha.php?sid=747283372562&amp;s=1">
</div>
</div>

Как мне аналогично с первым случаем захватить картинку?

uncle17

jQuery?

$(".captcha img").attr("src")

.attr("src") - если надо.
Или вопрос в нативном JS ?

uncle17

или
elm - твой слой с капчей
if (elm.childNodes)
{
for (var i = 0; i < elm.childNodes.length; i++)
{
var childNode = elm.childNodes[i];
// childNode.nodeValue - вот тебе содержимое дочерних узлов
}
}

Commandor


var containers = document.getElementsByClassName('captcha');
for (var c = 0; c < containers.length; c++) {
var imgs = containers[c].getElementsByTagName('img');
for (var i=0; i < imgs.length; i++) {
var img = imgs[i];
// ....
// PROFIT!
}
}

uncle17

а уровень проникновения в таком случае какой (как и в моем, впрочем)?

Commandor

аналогично $(".captcha img") - все уровни вложенности

uncle17

ну тогда всё очень красиво

General213

Реально круто, оно работает, но пока что-то идёт не так. В рамках функции оно выполняется, далее в случае если img не null (а она не null) запускается другая функция, но в ней img уже null.
Не понимаю.

uncle17

дык...
а...
в каких объектах и глобалах у тебя эти переменные еще есть?
наверняка imgs или img где-то объявлены глобально - вот тебе и бебебе

General213

ненене, сам забыл свою цепочку функций, и вспомнил, где ещё раз был поиск по id
Всё разобрался.
Огромное спасибо, этот код для меня был очень важен!

istran

Спамер небось?

General213

Не совсем. Честно. Конечно же сфера левая, но это совсем не спам.
Да ладно, чего уж я загадками. Этот фрагмент - это капча вконтакта. Использоваться будет в основном для массового проставления лайков в сообществах и просто постах. В первом случае, чтобы сообщества смотрелись солиднее, типа нравятся пользователям их посты, во втором случае обычно заказывают для всяких конкурсов или просто для поднятия ЧСВ.
Так что в общем-то никакого спама, но вконтакту такое конечно не нравится :)
И да, уже всё работает, и очень радует глаз :)

istran

А капчу китайцы разгадывают? Просто я недавно задумался, умеют ли китайцы распознавать капчу на русском.

nata_chira

во вконтактиге капча вроде латиницей, так что тут все проще)

istran

В том то и дело, что кириллицей. Только вчера в мобильном приложении видел, хотя интерфейс у меня английский.

istran

Хм, а в веб-интерфейсе латиницей.

General213

Капча кириллицей разгадывается без проблем, тут всё ок. Однако давно уже такой у контакта не видел, мне он показывает только латиницу.

Temach

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