Dan-Levi Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 (endret) Hei, Jeg er ikke super rå på php men ville vise hvordan jeg fikk det til $imageFolder = 'strip'; //Sett mappenavn $prefix = 'strip_from_date'; // Sett prefiks, dette blir etterfulgt av datoen $date = '2014-02-05'; // Startdato $end_date = '2014-03-20'; // Sluttdato $i = 0; while (strtotime($date) <= strtotime($end_date)) { file_put_contents($imageFolder.'/'.$prefix.'_'.$date.".gif",file_get_contents('http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date='.strtotime($date).'&strip=lunch')); $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); $i++; } Edit: Så i all hovedsak kan du laste ned alle strips ved å modifisere det litt. sånn som slik: $imageFolder = 'strip'; //Sett mappenavn $prefix = 'strip_from_date'; // Sett prefiks, dette blir etterfulgt av datoen $strip = 'lunch'; // pondus, lunch, nemi, kellermannen, rocky, zelda, $date = '2014-02-05'; // Startdato $end_date = '2014-03-20'; // Sluttdato $i = 0; while (strtotime($date) <= strtotime($end_date)) { file_put_contents($imageFolder.'/'.$prefix.'_'.$date.".gif",file_get_contents('http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date='.strtotime($date).'&strip='.$strip)); $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); $i++; } Ok jeg kunne ikke la det stoppe der. Hvis du er en skikkelig røver etter disse stripene kan du laste ned alle sammen, legger ved hele fila. Testa den lokalt og den fungerer. Det er noen feilmeldinger siden den ikke finner alle bildene, raskt og skittent så deaktiverte jeg feilmeldinger. Obs. Lag mapper som heter pondus, lunch, nemi, rocky, kellermannen, zelda. (se bilde) <?php error_reporting(0); ini_set("display_errors", false); ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <title>Strip stripper!</title> <meta name="viewport" content="width=device-width, initial-scale=1"> </head> <body> <h1>Fetch those images plox!</h1> <?php $prefix = 'strip_from_date'; // Sett prefiks, dette blir etterfulgt av datoen $date = '2014-02-20'; // Startdato $end_date = '2014-04-20'; // Sluttdato // Ikke rør under her $strips = array('pondus','lunch','nemi','rocky','kellermannen','zelda'); while (strtotime($date) <= strtotime($end_date)) { foreach ($strips as $strip) { file_put_contents($strip.'/'.$prefix.'_'.$date.".gif",file_get_contents('http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date='.strtotime($date).'&strip='.$strip)); $date = date ("Y-m-d", strtotime("+1 day", strtotime($date))); } } echo "Done!"; ?> </body> </html> Jeg tar ikke ansvar for misbruk av denne koden. Endret 20. mars 2014 av JanTerjeRiisOttoJohansen 1 Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Kan være en tanke å sette ett lite "sleep()" mellom hver iterasjon om man skal laste ned så mange striper på en gang, slik at trafikken som genereres ikke forveksles med ett denial of service forsøk. Good job anyhow. Lenke til kommentar
Twinflower Skrevet 20. mars 2014 Forfatter Del Skrevet 20. mars 2014 Haha, Herlig! Lenke til kommentar
Lycantrophe Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Kan forøvrig nevnte at post #2 laster ned i parallell. Og 30-ish nedlastinger vil aldri forveksles med DoS. obligatorisk: >php Lenke til kommentar
Lycantrophe Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Massiv fanboyisme her. +/- med alle platformer. Ikke kom å si Linux trumfer gjennom.Jeg vil bare påpeke at det utelukkende har blitt diskutert et (massivt) minus her, intet mindre. Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Kan forøvrig nevnte at post #2 laster ned i parallell. Og 30-ish nedlastinger vil aldri forveksles med DoS. obligatorisk: >php Sikkert ikke, men de 45-60 spørringene i hver iterasjon utgjør litt mer om flere cut-n-paster koden og kjører den. Men vi er jo alle ansvarlige og fornuftige. Lenke til kommentar
Lycantrophe Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Det er én query per iterasjon, hvor i all verden får du 45-60 fra? Jeg er sikker på at scraping fra google alene utgjør en betydelig større last, eller alle andre folk som tilfeldig leser tegneseriene. Dette er uansett garantert neglisjerbar trafikk for de. Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 (endret) Ah, mente selvsagt 45-60 spørringer/iterasjoner, f.eks. fra koden lenger opp. $date = '2014-02-20'; // Startdato $end_date = '2014-04-20'; // Sluttdato Endret 20. mars 2014 av rockPaperScissors() Lenke til kommentar
GeirGrusom Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 (endret) Hahaha, Windows. Vel, da suger det å være deg. -- Python har wget libs, så du kan sikkert bruke det. Eller PowerShell så trenger ikke TS installere noe som helst. $endDate = Get-Date $startDate = $endDate.AddDays(-7) $unixEpoch = (Get-Date -Year 1970 -Month 1 -Day 1).AddHours(1) $currentDate = $startDate $webClient = New-Object System.Net.WebClient while($currentDate -lt $endDate) { $timeStamp = [int]($currentDate - $unixEpoch).TotalSeconds $filename = "lunch-" + $currentDate.ToShortDateString() + ".jpg" $url = New-Object System.Uri "http://www.dagbladet.no/tegneserie/pondusarkiv/serveconfig.php?date=$timestamp&strip=lunch" Write-Host $url "->" $filename Try { $webClient.DownloadFile($url, $filename) } Catch { Write-Host $_.Exception.InnerException.InnerException.Message } $currentDate = $currentDate.AddDays(1) }Jeg er ingen ekspert i PowerShell, så jeg har skrevet alt imperativt. Endret 20. mars 2014 av GeirGrusom 2 Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Jeg hørte en plass at powershell var lett å plukke opp av C# utviklere, men jeg får lyst å plukke ut øynene mine av det der.. C# > powershell. Lenke til kommentar
Lycantrophe Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Powershell er shellspråkenes PHP. Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Er powershell designet i cowboy-stil som PHP mener du, eller tenker du ut fra syntaks vi ser her? Vet for lite om powershell til å avskrive det helt. Lenke til kommentar
Dan-Levi Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Jeg hørte en plass at powershell var lett å plukke opp av C# utviklere, men jeg får lyst å plukke ut øynene mine av det der.. C# > powershell. Det er ikke så ulikt faktisk, er du kjent med C# plukker du det fort opp. Lenke til kommentar
Occi Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 (endret) ITT: lyc vs røkla Endret 20. mars 2014 av Occi 1 Lenke til kommentar
Oyand Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Massiv fanboyisme her. +/- med alle platformer. Ikke kom å si Linux trumfer gjennom.Jeg vil bare påpeke at det utelukkende har blitt diskutert et (massivt) minus her, intet mindre. Ja (et ikke så massivt). For brukere i det hele tatt, og støtte for applikasjoner rundt hele verden, samt spill, så er Windows uten tvil vinneren. Nå tar heldigvis selskaper fatt og satser på støtte på tvers av platformer, men linux er fortsatt ikke intressant nok for massene. Helst for utviklere og folk som William Wallace. Håper derimot det blir like god støtte for linux mtp alle spill og enkelte applikasjoner da jeg liker lite retningen Windows går i. Masse som støtter linux, men gjør det svært dårlig. Er på ingen måte motstander av Linux. Tvert i mot, men dine sneidige kommentarer som i grunn forteller at: "Linux er best. Alle andre er for tapere.", er så latterlige å lese, og ikke minst feilaktige, at det måtte kommenteres. Anyway, sorry for derail. Ser jo ut til at du fikk ordnet problemet(?). Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Lyc bruker vel open solaris anyhows. Lenke til kommentar
Lycantrophe Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Ja (et ikke så massivt). For brukere i det hele tatt, og støtte for applikasjoner rundt hele verden, samt spill, så er Windows uten tvil vinneren.Nåja. Kanskje på spillfronten. Nå tar heldigvis selskaper fatt og satser på støtte på tvers av platformer, men linux er fortsatt ikke intressant nok for massene.Dette er utrolig off topic, men når du tyr til dette bør du fikes forsiktig over ansiktet med en ørrett. Det er nemlig helt uvesentlig og et utrolig dårlig poeng å ta opp - faktum er nemlig at her hadde *nix userland (som er ganske portabelt) løst problemet, også for "massene". At massene, om de i det hele tatt hadde vært interessante, verken har behovet eller forstår at de har behovet har ingenting med saken å gjøre. Lyc bruker vel open solaris anyhows.Debian. Lenke til kommentar
rockPaperScissors() Skrevet 20. mars 2014 Del Skrevet 20. mars 2014 Ah, ok. Debian i dag her og. Lenke til kommentar
snippsat Skrevet 21. mars 2014 Del Skrevet 21. mars 2014 (endret) Ah, mente selvsagt 45-60 spørringer/iterasjoner, f.eks. fra koden lenger opp. Dette er uansett ikke så ille,og når dagbladet ikke lagrer enn ca 14 dager tilbake. Da laster man ned alt av tegneserier på et par min uten at server blir særlig belastet av den grunn. Kan være en tanke å sette ett lite "sleep()" mellom hver iterasjon om man skal laste ned så mange striper på en gang, Det er jo en måte og gjøre det på,si at dagbladet hadde flere år i arkiv med tegneserier, så hadde sleep() vært en måte,men ikke ideelt. Jeg bruker Scrapy på litt større jobber. For gøy lager en til som tar ned alle tegneserier striper hver dag. Nå bruker jeg innebygd scheduler i Python kjører en gang i døgnet,det kan nok være like hensiktsmessig og bruke Windows scheduler,Linux cron og kalle koden når man kun skal gjøre en oppgave hver dag. from lxml.html import parse #http://lxml.de/ from datetime import datetime from urllib import urlretrieve import sched, time import re def cartoon_dagbladet(): ''' Parse dayliy cartoons from Dagbladet Give images correct name and date ''' cartoons = ['Pondus','Lunch','Nemi','Kellermannen','Rocky','Zelda','Fagprat','Egil Olsen'] for index, name in enumerate(cartoons, 1): tag = parse('http://www.dagbladet.no/tegneserie/').getroot() code = tag.xpath ('.//*[@id="content"]/div[{}]/div/a[3]/img/@src'.format(index)) url = '{}{}'.format(tag.base, code[0]) time_stamp = re.search(r'date=(\d+)', code[0]) dates = datetime.fromtimestamp(int(time_stamp.group(1))).strftime('%d-%m-%Y') if name == 'Kellermannen': name_dates = '{} {}.jpg'.format(name, dates) urlretrieve(url, name_dates) else: name_dates = '{} {}.gif'.format(name, dates) urlretrieve(url, name_dates) schedule.enter(86400, 1, cartoon_dagbladet, ()) if __name__ == '__main__': schedule = sched.scheduler(time.time, time.sleep) schedule.enter(86400, 1, cartoon_dagbladet, ()) schedule.run() Endret 21. mars 2014 av snippsat 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å