Javascript 如何在JS/JQuery中迭代Xpath

Javascript 如何在JS/JQuery中迭代Xpath,javascript,jquery,xpath,apify,Javascript,Jquery,Xpath,Apify,我正在尝试使用创建一个爬虫程序 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;

我正在尝试使用创建一个
爬虫程序

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;
}

我如何迭代此操作以获得整个数据列表?

我还没有测试它,但我建议先选择所有项目,然后使用
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
        };
    });
}