0

我试图使用Apifiycrawler为这个页面创建一个。

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

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

4

1 回答 1

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
        };
    });
}
于 2017-03-01T07:33:03.820 回答