14.Mассив, NaN. Сбор ссылок.

 

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

Кроме того, если в выдаче нам дается рекламный топик, или топик на канал, то кол-во просмотров там не находится в том месте где у обычного топика. В случае, когда наша функция parseInt() не сможет вывести число, она будет возвращать NaN. Эта такая фишка в джаваскрипте называется НЕЧИСЛО. То есть, все топики которые возвращают нам NaN и stroka<1000 нас не интересуют:

 

если число просмотров у нас больше минимально нужного выполняем код в скобках. По-хорошему тут бы еще поставить условие на NaN, но я проверил, NaN не больше 1000, поэтому оставим эту доработку на потом, а пока двигаемся дальше:

Теперь разбор по строкам:

Квадратные скобки указывают что мы создали пустой массив. Если бы их не было, то была бы просто переменная как мы уже знаем. Дамные в масиве разделяются через запятую. То есть если бы на нужно было бы создать массив со значениями, мы бы написали примерно следующее:

Другими словами мы создали массив ‘primerMassiva’ и сходу впихнули туда 5 различных элементов. Про такое говорят «Длина массива равна 5» Чтоб его померять нам нужно использовать метод length:

не поленитесь, запустите этот код в нашем файлике ‘тренировочный.js’. Массив это очень удобная штука, его желательно понять, а пока вернемся к разбору нашего кода. Строка номер 3:

Тут мы снова используем метод length. Он считает количкество элементов с классом

Этот класс на странице использует тег главный div который отвечает за вывод топика:

2015-12-11 10-20-31 Винда 7(64x) [Работает] - Oracle VM VirtualBox

Для чего мы считаем количество топиков и помещаем эти данные в переменную kolvoTopikov? Правильно. Чтоб потом сделать столько циклов по сбору ссылок. За это и отвечает строка 4 нашего кода:

В ней первым параметром создаем переменную i, которой присвоим значение 0. Циклы будут выполняться до тех пор пока их количество не будет равно количеству топиков на странице.

А теперь обратите внимане на хитрый ход в строке 5:

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

Остальной код мы разобрали вплоть до 12 строки:

Тут вы видите новый для себя способ получения ссылки через .href. Можно было бы вытянусть ссылку и другими способами, например вычистить строку регулярными выражениями. Но тут так проще. Вы пока обратите внимание, что можно таким способом можно получать доступы к  ссылкам, картинкам, и другим обьектам на странице. Более подробно об этом будет в рубрике Работа с DOM.

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

Другими словами мы вытянули ссылку и поместили в переменную url. Возможно вам немного не понятно, как это каждый цикл мы помещаем новые данные в переменные, а куда деваются те которые там уже были? Все очень просто если перед переменной написано слово var это означает ее объявление. То есть она создается заново, а если она была до этого, то удаляется.

А вот 14 строка:

говорит нам о том, что данные(ссылка) из переменной url добавляются в массив arrUrl. Как вы уже догадались, за это отвечает метод  .push()

Перейти к следующему уроку!

  8 комментариев to “14.Mассив, NaN. Сбор ссылок.”

  1.  

    Здравствуйте. Спасибо за отличные уроки. У меня вопрос. Код не работает, никаких ошибок, просто ничего не выводится.

  2.  

    Разобрался, просто вылезал NaN

  3.  

    Здравствуйте. Не могу разобраться: нужно сделать массив, в который буду добавляться урлы страниц пользователей Одноклассников, к которым я заходил. Перед заходом к новому пользователю — проверка по массиву, если урл там есть — то не заходим.

  4.  

    здравствуйте , спасибо за труды, но я начиная с 10 -11 урока столкнулся с такой проблемкой .. макрос пишет :Error: Accessing content window is not supported in multiprocess Firefox, line 213 (Error code: -991) подскажите как с этим бороться

    •  

      Вы запускаете аймакрос на мультипроцессорной мазиле, а он не рассчитан на это. Либо отключите мультипроцессорность, либо установите другую версию браузера.

  5.  

    Здравствуйте, спасибо за отличные уроки. У меня вопрос: Как узнать список ссылок с любого сайта, которые есть в нем?

    Например: я вписал https://yandex.ru/ мне на экран выскачит:
    https://yandex.ru/maps
    https://yandex.ru/video/

  6.  

    Доброго времени суток, подскажите, как сделать условие типа если находится на одном сайте, выполнять команду, иначе другую команду. Дело в том, что если var stroka = content.document.getElementsByClassName(‘class’)[0].innerHTML не находит этого класса, то вылетает ошибка и макрос останавливается.

Добавить комментарий