Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Парсинг html-страницы

Ответить
Настройки темы
VBS/WSH/JS - [решено] Парсинг html-страницы

Ветеран


Сообщения: 1639
Благодарности: 50

Профиль | Отправить PM | Цитировать


Изменения
Автор: The_Immortal
Дата: 07-05-2018
Приветствую!

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

Алгоритм придумал следующий:

1. Формирую массив MatchName, состоящий из названий необходимых для отслеживания матчей:
- Матч 01 - Россия : Саудовская Аравия - Москва «Лужники»
- Матч 07 - Аргентина : Исландия - Москва «Спартак»
- Матч 11 - Германия : Мексика - Москва «Лужники»

2. Поочередно получаю в NodeList дивы с классом "header" (див внутри первого столбец таблицы) и заглядываю внутрь каждого (через innerText), сверяя название текущего матча с первым элементом массива MatchName:
Код: Выделить весь код
<div class="header" ng-bind="product.productName">Матч 01 - Россия : Саудовская Аравия - Москва «Лужники»</div>
3. Если название совпало, то каким-то образом перехожу к соседнему диву "col-sm-9 col-xs-12" (второй таблицы) и также каким-то образом изымаю имя класса внутреннго дива для всех 4 квадратов.

Ключевое - это определить класс "class="categoryBox zeroAvailability" - т.е. если этот класс НЕ "zeroAvailability", то далее кидается алерт.

4. Аналогично пройтись по остальным элементам массива MatchName.



Ну в общем, я начал:

Код: Выделить весь код
Option Explicit

Const READYSTATE_COMPLETE = 4 
Const TimeOut = 10000
Const link = "https://tickets.fifa.com/Services/ADService.html?lang=ru"

Dim objNodeList, i, j

Dim MatchName(2)	' массив из искомых названий матчей 
MatchName(0) = "Матч 01 - Россия : Саудовская Аравия - Москва «Лужники»"
MatchName(1) = "Матч 07 - Аргентина : Исландия - Москва «Спартак»"
MatchName(2) = "Матч 11 - Германия : Мексика - Москва «Лужники»"

With WScript.CreateObject("InternetExplorer.Application")
	.Visible = False
	.Navigate(link)
	
	Do
		WScript.Sleep TimeOut	' ожидаем загрузку страницы
	Loop Until Not .Busy And .ReadyState = READYSTATE_COMPLETE
	
	objNodeList = .document.getElementsByClassName("header")	' получаем в NodeList все элементы с указанным классом

	For i = 0 to 2 Step 1
		For j = 0 to objNodeList.length Step 1	' !!! Ошибка: "Требуется объект '[object HTMLCollection]'
			' ...
		Next		
			
	Next	

	Set objNodeList = Nothing
	
	.Quit
End With

WScript.Quit 0

Вопросы следующие:

1. Понять не могу в чем ошибка. objNodeList - это NodeList, который представляет собой массив из Element'ов. Почему я не могу получить длину этого массива?

2. Вопрос касательно общего алгоритма... Может быть как-то задачу попроще можно решить или логика моя пойдет?

3. Если возможно, то подскажите, пожалуйста, каким образом можно перемещаться по соседним div'ам (из пункта 3. алгоритма)?

Спасибо!

Отправлено: 16:55, 07-05-2018

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


The_Immortal, нынче все браузеры достаточно сблизились в своих трактовках «как оно должно быть». Попробуйте прогнать его под IE 6/7/8. Попробуйте прогнать свой код под IE 6/7/8. Кроме отсутствия свойства .nextElementSibling наверняка не будет и фантомных текстовых элементов.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:34, 12-05-2018 | #21



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Парсинг html-страницы

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - Парсинг HTML, Parser HTML dosperados Скриптовые языки администрирования Windows 6 15-04-2016 08:46
CMD/BAT - Парсинг HTML Smasher Скриптовые языки администрирования Windows 14 25-09-2012 20:45
[решено] Парсинг страницы с редиректом (PHP) Luzuk Вебмастеру 3 16-03-2012 18:06
Отображение HTML страницы в окне assch AutoIt 3 10-08-2009 14:58
Медиа - автозапуск html страницы с CD WChek Хочу все знать 38 09-06-2008 15:23




 
Переход