Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.03.2017, 18:40
Интересующийся
Отправить личное сообщение для Fortun Посмотреть профиль Найти все сообщения от Fortun
 
Регистрация: 13.06.2013
Сообщений: 15

Нужна помощь с DOMParser (или с XMLHttpRequest).
Здравствуйте.
Сразу скажу, что прежде чем написать сюда некоторое время гуглил, но ничего толкового не нашел.
Мой вопрос заключается в следующем. Есть у меня определенная страница, с которой я хочу получить все элементы с определенным классом. Вот к какому коду я пришел:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://site.ru', false);
xhr.send();
var parser=new DOMParser();
var xmlDoc=parser.parseFromString(xhr.response,"text/xml");
var tds = xmlDoc.getElementsByClassName("mar_t");
console.log(tds);


Но в результате выдается пустой ответ.

Если после xhr.send(); я делаю console.log(xhr.response);, то мне выдается абсолютно весь код запрашиваемой страницы, но мне нужен просто список объектов с указанным классом.
Что я делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 29.03.2017, 18:43
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,990

var tds = document.querySelectorAll(".mar_t")
Ответить с цитированием
  #3 (permalink)  
Старый 29.03.2017, 19:36
Кандидат Javascript-наук
Отправить личное сообщение для Diphenyl Oxalate Посмотреть профиль Найти все сообщения от Diphenyl Oxalate
 
Регистрация: 21.01.2017
Сообщений: 139

Если классы добавляются скриптом, то найти элементы по классу не получится
Ответить с цитированием
  #4 (permalink)  
Старый 30.03.2017, 04:24
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

А если применить XPath?
var XPIter = document.evaluate("//*:*[contains(' '+@class+' ', ' mar_t ']");
var tds=[];
var next;
while((next = XPIter.iterateNext())!=null)
  tds.push(next);

Так же надо убедиться что документ действительно корректно распарсился как XML.
Ответить с цитированием
  #5 (permalink)  
Старый 30.03.2017, 14:50
Интересующийся
Отправить личное сообщение для Fortun Посмотреть профиль Найти все сообщения от Fortun
 
Регистрация: 13.06.2013
Сообщений: 15

Нашел решение. На него меня навела фраза о том, что классы добавляются скриптом. То есть страница не полноценная и надо сделать ее полноценным HTML.

Вот мое решение:

var xhr = new XMLHttpRequest();
xhr.open('GET', 'https://site.ru', false);
xhr.send();
var tempElement = document.createElement('div');
tempElement.innerHTML = xhr.responseText;
var message = tempElement.querySelectorAll('a.mar__t');
for (i = 0; i < message.length; i++) { 
    console.log(message[i]);
}


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

Последний раз редактировалось Fortun, 30.03.2017 в 15:00.
Ответить с цитированием
  #6 (permalink)  
Старый 30.03.2017, 16:38
Аватар для GayCoder
Аспирант
Отправить личное сообщение для GayCoder Посмотреть профиль Найти все сообщения от GayCoder
 
Регистрация: 28.01.2016
Сообщений: 99

vanished

Последний раз редактировалось GayCoder, 02.08.2020 в 16:15.
Ответить с цитированием
  #7 (permalink)  
Старый 30.03.2017, 16:39
Аватар для GayCoder
Аспирант
Отправить личное сообщение для GayCoder Посмотреть профиль Найти все сообщения от GayCoder
 
Регистрация: 28.01.2016
Сообщений: 99

vanished

Последний раз редактировалось GayCoder, 02.08.2020 в 16:15.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка внутри формы нужна помощь espltd Элементы интерфейса 9 15.04.2016 08:28
Нужна помощь с Массивами и функциями Mikekrd Элементы интерфейса 0 23.02.2016 10:20
Проблема с ЯНДЕКСОМ. Нужна помощь в решении! programmstate Мобильный JavaScript 0 27.09.2014 16:07
нужна помощь в JavaScript михаил Общие вопросы Javascript 26 30.10.2013 12:07
нужна помощь Sergiy Серверные языки и технологии 2 31.03.2010 20:16