如何在JS / JQuery中迭代Xpath

时间:2017-03-01 06:52:23

标签: javascript jquery xpath apify

我正在尝试使用page为此Apifiy创建crawler

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

如何迭代这个以获取整个数据列表?

1 个答案:

答案 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
        };
    });
}