Как перебрать массив на Apify? - PullRequest
0 голосов
/ 29 сентября 2018

Я сканирую Sainsbury's, это мой начальный URL: 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

Как я могу это сделать?

1 Ответ

0 голосов
/ 22 октября 2018

Вы можете просто вывести категорию и подкатегорию из каждой области видимости.

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