2021-02-08 22:21:34 -08:00
|
|
|
async function autoScroll() {
|
|
|
|
const canScrollMore = () =>
|
|
|
|
self.scrollY + self.innerHeight <
|
|
|
|
Math.max(
|
|
|
|
self.document.body.scrollHeight,
|
|
|
|
self.document.body.offsetHeight,
|
|
|
|
self.document.documentElement.clientHeight,
|
|
|
|
self.document.documentElement.scrollHeight,
|
|
|
|
self.document.documentElement.offsetHeight
|
|
|
|
);
|
|
|
|
|
|
|
|
const scrollOpts = { top: 250, left: 0, behavior: "auto" };
|
|
|
|
|
|
|
|
while (canScrollMore()) {
|
|
|
|
self.scrollBy(scrollOpts);
|
|
|
|
await new Promise(resolve => setTimeout(resolve, 500));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// ===========================================================================
|
|
|
|
class AutoScrollBehavior
|
|
|
|
{
|
|
|
|
|
2021-02-17 12:37:07 -05:00
|
|
|
async beforeLoad() {
|
2021-02-08 22:21:34 -08:00
|
|
|
}
|
|
|
|
|
|
|
|
async afterLoad(page, crawler) {
|
|
|
|
try {
|
2021-02-17 12:37:07 -05:00
|
|
|
await Promise.race([page.evaluate(autoScroll), crawler.sleep(30000)]);
|
2021-02-08 22:21:34 -08:00
|
|
|
} catch (e) {
|
|
|
|
console.warn("Autoscroll Behavior Failed", e);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
module.exports = AutoScrollBehavior;
|