如何在Apify上遍历数组?

时间:2018-09-29 17:33:32

标签: javascript jquery web-scraping web-crawler apify

我正在爬行塞恩斯伯里的,这是我的起始网址:https://www.sainsburys.co.uk/shop/gb/groceries/meat-fish/all-chicken-44?fromMegaNav=1#langId=44&storeId=10151&catalogId=10123&categoryId=310864&parent_category_rn=13343&top_category=13343&pageSize=36&orderBy=FAVOURITES_ONLY%7CSEQUENCING%7CTOP_SELLERS&searchTerm=&beginIndex=0&hideFilters=true

我希望显示类别,子类别和子类别,并在页面上显示每个商品的价格,标题和图片来源。

我当前的代码返回(以JSON格式)产品标题,价格和图片。它还返回我正在爬网的页面的类别,子类别和子类别。我希望返回每个产品标题,价格和图像旁边的类别,并且不确定如何建立循环来实现此目的。

function pageFunction(context) {
// called on every page the crawler visits, use it to extract data from it
var = context.jQuery; var result = []; (".article").each( function() {
result.push({

        title : $(this).find(".productNameAndPromotions:eq(0) a:eq(0)").text(),
        price : $(this).find(".pricePerUnit:eq(0)").text(),
        image : $(this).find('img').attr('src'),
        
        category : $(this).find('span:eq(1)').text(),
        subcategory : $(this).find('span:eq(3)').text(),
        subsubcategory : $(this).find('span:eq(5)').text(),
        subsubsubcategory : $(this).find('span:eq(7)').text()
     
   });
  });
return result;}

这是我的代码返回的内容

JSON Result

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以只将类别和子类别放在每个范围之外。

function pageFunction(context) {
    // called on every page the crawler visits, use it to extract data from it
    var $ = context.jQuery;
    var results = [];
    var categoty = $('category selector').text().trim();
    var subCategory = $('subCategory selector').text().trim();
    var subsubcategory = $('subsubcategory selector').text().trim();
    var subsubsubcategory = $('subsubsubcategory selector').text().trim();
    (".article").each( function() {
        results.push({
            title : $(this).find(".productNameAndPromotions:eq(0) a:eq(0)").text(),
            price : $(this).find(".pricePerUnit:eq(0)").text(),
            image : $(this).find('img').attr('src'),
            category : categoty,
            subcategory : subCategory,
            subsubcategory : subsubcategory,
            subsubsubcategory :subsubsubcategory
        });
    });
    return results;
}