Skip to content

Instantly share code, notes, and snippets.

@afreeland
Created October 3, 2017 18:48
Show Gist options
  • Save afreeland/7c452cbe478194771540ea31ef175735 to your computer and use it in GitHub Desktop.
Save afreeland/7c452cbe478194771540ea31ef175735 to your computer and use it in GitHub Desktop.
JS: Tableau My Agenda Scrape
(function(user){
let mySchedule = [ ['user', 'day', 'time', 'startDate', 'endDate', 'title', 'venue']];
var days = [].slice.call(document.querySelectorAll('.Sessions-heading'), 0)
function splitTime(timeStr, dayOfWeek){
// Split 1:30 pm - 3:30 pm, 1:30pm-3:30pm
// Into ['1:30 pm', '3:30 pm']
let _split = timeStr.toUpperCase().split(/\s?-\s?/)
let possibleDays = {
Monday: '10/09/2017',
Tuesday: '10/10/2017',
Wednesday: '10/11/2017',
Thursday: '10/12/2017'
}
let day = possibleDays[dayOfWeek];
try{
startDate = day + ' ' + _split[0];
endDate = day + ' ' + _split[1];
}catch(e){
debugger;
}
return { startDate, endDate };
}
days.forEach( (day, index) => {
let dayOfWeek = day.querySelector('span').textContent;
let sessions = day.nextElementSibling.querySelectorAll('.Sessions-item')
sessions.forEach( (sess) => {
let time = sess.querySelector('.Sessions-item-time span').textContent
let _dates = splitTime(time, dayOfWeek);
let title = sess.querySelector('.Sessions-item-info .Sessions-item-info-title').textContent;
let venue = sess.querySelector('.Sessions-item-info .Sessions-item-info-venue').textContent
mySchedule.push([user, dayOfWeek, time, _dates.startDate, _dates.endDate, title, venue ])
})
})
console.log(mySchedule);
console.log(mySchedule.join('\n'))
})('afreeland')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment