Разбор HTML с XPath / XMLHttpRequest - PullRequest
       17

Разбор HTML с XPath / XMLHttpRequest

1 голос
/ 16 декабря 2009

Я пытаюсь загрузить страницу HTML и проанализировать ее с помощью XMLHttpRequest (в самой последней версии браузера Safari). К сожалению, я не могу заставить его работать!

var url = "http://google.com";

xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url);

xmlhttp.onreadystatechange  = function(){
    if(xmlhttp.readyState==4){
        response = xmlhttp.responseText;
        var doc = new DOMParser().parseFromString(response, "text/xml");
        console.log(doc);
        var nodes = document.evaluate("//a/text()",doc, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,null);
        console.log(nodes);
        console.log(nodes.snapshotLength);
        for(var i =0; i<nodes.snapshotLength; i++){
            thisElement = nodes.snapshotItem(i);
            console.log(thisElement.nodeName);
        }
    }
};
xmlhttp.send(null);

Текст успешно загружен (ответ содержит действительный HTML) и правильно проанализирован в дереве (doc представляет действительный DOM для страницы). Тем не менее, node.snapshotLength равно 0, несмотря на то, что запрос действителен и должен иметь результаты. Любые идеи о том, что идет не так?

Ответы [ 2 ]

1 голос
/ 16 декабря 2009

Если вы используете:

  • библиотека JS или
  • у вас есть современный браузер с доступным методом querySelectorAll (Safari - один)

Вы можете попробовать использовать CSS-селекторы для анализа DOM вместо XPATH.

1 голос
/ 16 декабря 2009

HTML не является XML. Два не являются взаимозаменяемыми. Если «HTML» на самом деле не является XHTML, вы не сможете использовать XPATH для его обработки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...