I am making a Facebook group member scraper and in that i found the page auto loads when taken scroll to down to settle that automatically i used the following code:-
setInterval(function(){
$(document).scrollTop($(document).height());
},1000);
its working fine but my rest code is also working at the same time.
var main = [];
$('#groupsMemberSection_self_bio').find('.uiList').each(function(){
$(this).find('._6a').each(function(){
$(this).find('div._6a:last').each(function(){
var href = $(this).find('a').attr('href');
if(href != undefined){
var obj = {};
var profile_url = $(this).find('a').attr('href');
var name = $(this).find('a').text();
var company_name_position = $(this).find('._60rj').next().text();
obj['url'] = profile_url;
obj['name'] = name;
obj['company_name'] = company_name_position;
}
if(obj != undefined){
main.push(obj)
}
})
})
});
$('#groupsMemberSection_admins_moderators').find('.uiList').each(function(){
$(this).find('._6a').each(function(){
$(this).find('div._6a:last').each(function(){
var href = $(this).find('a').attr('href');
if(href != undefined){
var obj = {};
var profile_url = $(this).find('a').attr('href');
var name = $(this).find('a').text();
var company_name_position = $(this).find('._60rj').next().text();
obj['url'] = profile_url;
obj['name'] = name;
obj['company_name'] = company_name_position;
}
if(obj != undefined){
main.push(obj)
}
})
})
});
$('#groupsMemberSection_things_in_common').find('.uiList').each(function(){
$(this).find('._6a').each(function(){
$(this).find('div._6a:last').each(function(){
var href = $(this).find('a').attr('href');
if(href != undefined){
var obj = {};
var profile_url = $(this).find('a').attr('href');
var name = $(this).find('a').text();
var company_name_position = $(this).find('._60rj').next().text();
obj['url'] = profile_url;
obj['name'] = name;
obj['company_name'] = company_name_position;
}
if(obj != undefined){
main.push(obj)
}
})
})
});
$('#groupsMemberSection_recently_joined').find('.uiList').each(function(i,v){
$(this).find('._6a').each(function(){
$(this).find('div._6a:last').each(function(){
var href = $(this).find('a').attr('href');
if(href != undefined){
var obj = {};
var profile_url = $(this).find('a').attr('href');
var name = $(this).find('a').text();
var company_name_position = $(this).find('._60rj').next().text();
obj['url'] = profile_url;
obj['name'] = name;
obj['company_name'] = company_name_position;
}
if(obj != undefined){
main.push(obj)
}
})
})
});
console.log('data', main);
downloadCSV('data.csv', main)
function convertArrayOfObjectsToCSV(args) {
var result, ctr, keys, columnDelimiter, lineDelimiter, data;
data = args.data || null;
if (data == null || !data.length) {
return null;
}
columnDelimiter = args.columnDelimiter || ',';
lineDelimiter = args.lineDelimiter || '\n';
keys = Object.keys(data[0]);
result = '';
result += keys.join(columnDelimiter);
result += lineDelimiter;
data.forEach(function(item) {
ctr = 0;
keys.forEach(function(key) {
if (ctr > 0) result += columnDelimiter;
result += item[key];
ctr++;
});
result += lineDelimiter;
});
return result;
}
function downloadCSV(args, stockData) {
var data, filename, link;
var csv = convertArrayOfObjectsToCSV({
data: stockData
});
if (csv == null) return;
filename = args.filename || 'export.csv';
if (!csv.match(/^data:text\/csv/i)) {
csv = 'data:text/csv;charset=utf-8,' + csv;
}
data = encodeURI(csv);
link = document.createElement('a');
link.setAttribute('href', data);
link.setAttribute('download', filename);
link.click();
}
What i want is the csv file should download once only when the page load is completed i mean the pagination that is set is auto-loaded to last page please help..how can i match the above condition so that once the last page is reached my csv is downloaded according to that data on page or if there is any other way then kindly help