kjeita Skrevet 12. september 2016 Del Skrevet 12. september 2016 eller CasperJS. Jeg prøver meg litt med PhantomJS, men har et elementært problem. Når jeg tester koden under så lastes kun bildene fra første 'side'. Hvordan får jeg lastet alt? var page = require('webpage').create(); page.viewportSize = {width: 1024, height: 768}; page.open('https://www.vg.no', function(status) { console.log("Status: " + status); if(status === "success") { page.render('vg.png'); } phantom.exit(); }); Lenke til kommentar
Enthroner Skrevet 12. september 2016 Del Skrevet 12. september 2016 Hei, hva mener du med alt? Hvis du vil ha et større utsnitt kan du øke height som en 'hack' kanskje? Evnt scrolle til bunn for å trigge lazyloading om det er en slik problemstilling du ser. Lenke til kommentar
kjeita Skrevet 12. september 2016 Forfatter Del Skrevet 12. september 2016 Det med å øke høyden virker noen plasser, men ikke alltids, og jeg vet ikke om siden vil ha en total høyde på 20 000, eller 200 000. Dette er hva jeg vår når jeg tester på vg sine sider: https://i.imgur.com/w3BoKuU.jpg Jeg vil tro scrolling kan virke, men jeg vet ikke helt hvordan. Når jeg prøvde det her om dagen, så fikk jeg kun til å laste top, og bunn, ikke det i mellom, så jeg gjorde noe feil der (og slettet derfor koden jeg hadde). Lenke til kommentar
Matsemann Skrevet 12. september 2016 Del Skrevet 12. september 2016 VG bruker en form for lazy-loading som trigges ved scrolling. Det sjekkes om bildet holder på å komme inn i synsfeltet til browseren før det vises. Så jeg ville hatt noe kode som scrollet nedover. Ikke hoppe rett til bunn, men flere stopp underveis. Lenke til kommentar
snippsat Skrevet 12. september 2016 Del Skrevet 12. september 2016 (endret) Kan ta utdrag fra kode som jeg har brukt før for og scrolle nedover. Bruker her PhantomJS() fra Selenium. Scroller her nedover på en men verdi satt i window.scrollTo(). Høyere vill verdi scrolle lenger av gangen, så lager her egne sider på websider som ikke har det f.eks infinite scrolling. driver = webdriver.PhantomJS() driver.set_window_size(1120, 550) driver.get(url) for page in range(page_count): page_source = driver.page_source driver.execute_script("window.scrollTo(0,100000000000);") Endret 12. september 2016 av snippsat Lenke til kommentar
kjeita Skrevet 14. september 2016 Forfatter Del Skrevet 14. september 2016 Jeg tror jeg kom fram til en løsning: var url = 'https://vg.no'; var viewWidth = 1024; var viewHeight = 768; var casper = require('casper').create(); casper.options.viewportSize = {width: viewWidth, height: viewHeight}; casper.start(url, function() { var scrollCount = 1; var scrollMax = this.evaluate(function () { return document.body.scrollHeight; }); this.repeat(Math.floor(scrollMax/viewHeight), function() { this.wait(200, function() { scrollCount++; this.scrollTo(0, scrollCount*viewHeight); }); }); }); casper.then(function() { this.capture("vg.png"); }); casper.run(); Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå