Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Парсер, как достать динамические данные с страницы. (https://javascript.ru/forum/events/58812-parser-kak-dostat-dinamicheskie-dannye-s-stranicy.html)

TimMoss 12.10.2015 10:20

Парсер, как достать динамические данные с страницы.
 
Пишу для себя небольшое расширение для хрома.

Есть вот такая страница:
http://steamcommunity.com/market/lis...tle-Scarred%29
Нужно вывести среднюю цену на предмет. Скрипт работает и корректно выводит нужные данные.

Проблема в том, что на странице отображаются только первые 10 позиций с пагинацией, динамически подгружающей следующие 10 предметов, а выборку необходимо сделать из 100 предметов. Эмулирование нажатия на span с кнопкой пагинации методом click не работает. Может быть возможно как-нибудь подгрузить сразу несколько динамических блоков с ценами в столбик, а затем спарсить разом?

Код парсера:
(считывает цены предметов, суммирует, выводит среднее.)

(function($){

function parserGo(){
 var b = $.ajax('http://steamcommunity.com/market/listings/730/AWP%20%7C%20Asiimov%20%28Battle-Scarred%29');
 b.done(function (d){ 
 var res = [];
 var page;
 $('#resultbox').html();
 for(page=0; page<1; page++){
  res[page] = analysisSite(d);
  }


 page = 0;
 var val = 0;
 var sum = 0.00;
 var count = 0;
 while(page < res.length){
 while(val < res[page].length){
 $('#resultbox').append(res[page][val] + "<br/>");
 sum += parseFloat(res[page][val])*10;
 val++;
 }
 count += res[page].length;
 page++;
 }
 var result = (sum/10)/count;
 alert(sum/10);
 alert(count);
 alert(result.toFixed(2));
 });
}

function analysisSite(data){
 var res = [];
 var i = 0;
 var num = $(this).text().replace(/[\$\sA-Za-z]/g, "");
 $(data).find('span.market_listing_price.market_listing_price_with_fee').each(function(){
  num = $(this).text().replace(/[\$\sA-Za-z\!]/g, "");
  if(num != "" && num != null){
    res[i] = num;
    i++;
  } 
 })
 return res;
 $('#searchResults_btn_next').click();

}
$(function(){
 $('#progress').hide();
 $('#starter').click(parserGo);
});
})(jQuery);


Часовой пояс GMT +3, время: 11:30.