Apify使用jQuery
和css选择器来定位数据。但是,我似乎无法理解css选择器,因此,我使用了XPath
。我使用的代码只提取了第一行数据,但没有提取整个数据列表。
我使用的代码如下:
function pageFunction(context) {
// called on every page the crawler visits, use it to extract data from it
var $ = context.jQuery;
var result = {
ID: document.evaluate('//div[@class="treffer-item"]/@id', document, null, XPathResult.STRING_TYPE, null).stringValue,
Title: document.evaluate('//div[@class="treffer-item"]/div[1]/div[1]/span[@class="treffer-inhalt-name"]', document, null, XPathResult.STRING_TYPE, null).stringValue
};
return result;
}
如何迭代这个以获取整个数据列表?
答案 0 :(得分:1)
我没有对它进行测试,但我建议先选择所有项目,然后使用map
选择结果数据。例如......
function pageFunction(context) {
var $ = context.jQuery;
var items = $(document).find("//div[@class='treffer-item']");
var titleSelector = "/div[1]/div[1]/span[@class='treffer-inhalt-name']";
return items.map(function(item) {
var id = item.attr("id");
var title = document.evaluate(
titleSelector,
item, // use current item instead of document
null,
XPathResult.STRING_TYPE,
null).stringValue;
return {
ID: id,
Title: title
};
});
}