Нужна помощь с 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);, то мне выдается абсолютно весь код запрашиваемой страницы, но мне нужен просто список объектов с указанным классом. Что я делаю не так? |
var tds = document.querySelectorAll(".mar_t")
|
Если классы добавляются скриптом, то найти элементы по классу не получится
|
А если применить XPath?
var XPIter = document.evaluate("//*:*[contains(' '+@class+' ', ' mar_t ']"); var tds=[]; var next; while((next = XPIter.iterateNext())!=null) tds.push(next); Так же надо убедиться что документ действительно корректно распарсился как XML. |
Нашел решение. На него меня навела фраза о том, что классы добавляются скриптом. То есть страница не полноценная и надо сделать ее полноценным 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'); нужен для того, чтобы обозначить абстрактную позицию полученного кода на странице, конкретизировать его место на странице я не стал, т.к. мне не нужно фактически размещать полученное на странице где выполняется скрипт. Чем можно заменить этот момент я не придумал :) (хотя и сам считаю что это какой то говнокод). |
vanished
|
vanished
|
Часовой пояс GMT +3, время: 05:45. |