Немного предыстории:
Оператор шведского поезда SJ перечисляет довольно много поездок, которые невозможно забронировать из-за изменения их расписания из-за отслеживанияпланирование технического обслуживания.
После запроса, когда расписание может быть завершено, единственным ответом SJ было то, что я должен продолжать входить на домашнюю страницу, чтобы вручную отслеживать , когда билеты могут быть выпущены.
Это, как вы понимаете, я считаю неадекватным.Такая утомительная задача должна и, вероятно, могла бы быть автоматизирована.
Моя попытка автоматизации до сих пор:
Мне несколько удалось получить соответствующие элементы с домашней страницы, как видно на рисунке.
Команда разбита:
SLIMERJSLAUNCHER=~/not_applications/Firefox.app/Contents/MacOS/firefox \
slimerjs \
--headless \
-profile ~/Library/Application\ Support/Firefox/Profiles/43t6k27y.ver56 \
script/save_table.js \
'https://www.sj.se/en/home.html\#/tidtabell/G%25C3%25B6teborg%2520C/Stockholm%2520Central/enkel/avgang/20190606-1200/avgang/20190606-1500/VU--///0//'
И save_table.js
выглядит следующим образом:
var system = require('system');
var page = require('webpage').create();
page.open(system.args[1], function()
{
var rows = page.evaluate(function(){
//document.getElementsByClassName('form-group--checkbox--label')[7].click();
return document.getElementsByClassName('timetable__row--clickable');
});
console.log("===> BEGIN");
for (i=0; i<rows.length; i++){
console.log(rows[i].innerText);
console.log("====");
};
phantom.exit();
});
Проблемы:
Запуск SlimerJS был немного сложным, поскольку он работает только с версиями Firefox <60.Это заставляет меня думать, что мой подход немного устарел. </p>
Как видно из JavaScript, я пытался установить флажок для Нон-стоп маршрутов (который работает в браузереконсоль), но это полностью нарушает slimerJS.
Как я могу заставить страницу отфильтровывать безостановочные маршруты перед перечислением поездок?