2017-03-01 26 views
0

我正在嘗試使用Apifiy爲此page創建一個crawler如何在JS/JQuery中迭代Xpath

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

我還沒有測試過,但我建議先選擇所有的項目,然後用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 
     }; 
    }); 
} 
+0

我試過這個,但得到語法錯誤。 – neenkart

+0

修復了語法錯誤... – Matze