我想从这个页面中的表格中提取几行http://www.money.pl/pieniadze/ 使用xpath表达式和javascript。 我可以将整个页面显示为弹出式窗口,但我无法使用document.evaluate()评估xpath表达式。 已尝试玩XPathResultType但没有结果。 任何人都可以帮忙吗?评估Chrome中的xpath表达式
这里是我的背景页:
<html><head><script>
...
var wholePage;
setInterval(fetch, 20000);
function fetch()
{
req = new XMLHttpRequest();
var url = "http://www.money.pl/pieniadze/";
req.open("GET", url);
req.onload = process;
req.send();
}
function process()
{
wholePage = req.responseText;
}
</script></head></html>
,这里是弹出页面:
<html><head><script>
...
onload = setTimeout(extract, 0);
function extract()
{
chrome.browserAction.setBadgeText({text: ''});
var bg = chrome.extension.getBackgroundPage();
var EurPlnPath = "//tr[@id='tabr_eurpln']";
var tempDiv = document.getElementById('current');
tempDiv.innerHTML = bg.wholePage;
var oneTopic = document.evaluate(EurPlnPath, bg.wholePage, null, XPathResult.ANY_TYPE, null)
var res = oneTopic.iterateNext();
}
</script></head>
<body>
<div id="current">
</div>
</body>
</html>
不要使用'querySelectorAll',但是'querySelector'。 ID必须是唯一的,所以你可以确定选择只返回一个元素。 'querySelector'比XPath更快[http://jsperf.com/getelementbyid-vs-queryselector/5],所以这个答案包含了一个很好的建议。尽管如此,这种方法无法使用纯字符串,请参阅我对该部分的回答。 – 2012-02-25 18:46:08
Rob是正确的,如果这几行有一个属性,可以定义选择它们,你最好使用querySelectorAll这样的属性。那么您将立即获得这些元素的列表。 – 2012-02-25 18:56:34