Comment écrire un script Greasemonkey qui va parcourir une liste d'URL (sur le même domaine) et activer une requête XPath sur le DOM résultant?Charger et analyser l'URL distante avec greasemonkey
Merci
Comment écrire un script Greasemonkey qui va parcourir une liste d'URL (sur le même domaine) et activer une requête XPath sur le DOM résultant?Charger et analyser l'URL distante avec greasemonkey
Merci
Utilisez GM_xmlhttpRequest pour la demande, et createContextualFragment pour l'analyse syntaxique HTML. Voir Best Addons for Greasemonkey pour un exemple utilisant createContextualFragment. Pour l'analyse de XML valide, vous pouvez simplement utiliser DOMParser.parseFromString.
EDIT: Voici un exemple très simple mais complet pour montrer comment tout va ensemble:
// ==UserScript==
// @name Parse HTML demo
// @namespace
// @include *
// ==/UserScript==
GM_xmlhttpRequest({
method: 'GET',
url: 'http://www.google.com',
onload: function(resp){
var range = document.createRange();
range.setStartAfter(document.body);
var xhr_frag = range.createContextualFragment(resp.responseText);
var xhr_doc = document.implementation.createDocument(null, 'html', null);
xhr_doc.adoptNode(xhr_frag);
xhr_doc.documentElement.appendChild(xhr_frag);
var node = xhr_doc.evaluate("//span//b[@class='gb1']", xhr_doc, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
GM_log("node.localName: " + node.localName);
GM_log("node.textContent: " + node.textContent);
}
});
Si vous travaillez avec xml ou bien écrit xhtml, vous pouvez le faire comme suit:
// XMLDocument
var doc = new DOMParser().parseFromString(xhr.responseText, "text/xml");
Dans le cas contraire
:
// HTMLDocument
var doc = document.implementation.createHTMLDocument("");
doc.documentElement.innerHTML = xhr.responseText;
Une fois que vous avez le document, vous pouvez utiliser quoi que ce soit juste comme un document normal.