不知道该不该叫保护。但是您要提取的价格是动态内容。所以你不能用 XPath 轻松访问它。
例如,第一辆车的价格“Honda Jazz 1,3i-VTEC Trend”是由脚本生成的:
<div id='e4b79dff-ede1-496a-8460-ca22374cf998'><Platzhalter></div>
<script>
var f053143d96c794669bf0a23f42f5486ac = function(value){return base64UTF8Codec.decode(arguments[0])};
replaceWith(document.getElementById('e4b79dff-ede1-496a-8460-ca22374cf998'), f053143d96c794669bf0a23f42f5486ac('DQogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB1bGwtcmlnaHQiPiAxOS45OTAsLSA8L3NwYW4+DQogICAgICAgICAgICA='));
</script>
在脚本中可以看到值:
DQogICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB1bGwtcmlnaHQiPiAxOS45OTAsLSA8L3NwYW4+DQogICAgICAgICAgICA=
,这是base64编码的字符串。如果你解码它,你会得到:
<span class="pull-right"> 19.990,- </span>
,其中包含价格。
所以如果你想从这个网站提取汽车价格,你可能需要写Google Apps Script。
此类 Apps 脚本示例:
function decodeElement(encoded) {
var bytes = Utilities.base64Decode(encoded);
var blob = Utilities.newBlob(bytes);
return blob.getDataAsString();
}
function extractEncodedElement(scriptStr) {
var rgx = new RegExp(".*'([^']+)'\\)\\);");
return rgx.exec(scriptStr)[1];
}
function extractPrice(scriptStr) {
var encoded = extractEncodedElement(scriptStr);
var decoded = decodeElement(encoded);
var xml = XmlService.parse(decoded);
return xml.getRootElement().getText();
}
function extractPrices(strs) {
var result = [];
for (i = 0; i < strs.length; i++) {
result.push(extractPrice(strs[i]));
}
return result;
}
因此,保存此脚本后,您可以在单元格的电子表格中使用它:
=extractPrices(IMPORTXML("your_link_here", "//div[@class='info']/script"))
它将返回一系列价格。 extractPrices 迭代来自 IMPORTXML 的结果并提取每个结果的价格。