And.rs Skrevet 5. mars 2011 Del Skrevet 5. mars 2011 (endret) Hei! Jeg har et spørsmål som går på å hente ut tekst og tall informasjon fra forskjellige nettsider. Tanken er å presentere et kontinuerlig oppdatert sammendrag av 5 forskjellig butikker sitt sortiment. Hver butikk har ca 4-5 forskjellige produkter, men som fortløpende byttes ut. Det er derfor et behov for et system som automatisk sjekker nye varer så forbrukeren sparer tid. Spørsmålet mitt er da; er det vanskelig og tidkrevende å lage en kode som automatisk henter ut informasjon fra forskjellige nettsider og presenterer dette i et sammendrag? Kravet er: - Koden kan hente ut tekst og tall informasjon (produktnavn, produktbeskrivelse, pris, link til siden, antall varer tilgjengelig) - Koden oppdaterer informasjonen jevnlig (f. eks hvert 30 min). Annen informasjon: Utenom at koden skal hente ut informasjon er det få andre krav. Om det skulle være noen tvil så skal jeg ikke utvikle dette selv, men vil hyre inn en egen utvikler. Derfor er det greit å få et tidsestimat. Dreier seg om å dekke et behov som for veldig mange vil vokse mye de neste 6- 12 mnd. Takker for svar! Endret 5. mars 2011 av And.rs Lenke til kommentar
snippsat Skrevet 5. mars 2011 Del Skrevet 5. mars 2011 Spørsmålet mitt er da; er det vanskelig og tidkrevende å lage en kode som automatisk henter ut informasjon fra forskjellige nettsider og presenterer dette i et sammendrag? Har skrevet litt om hvordan jeg gjør det i disse postene. https://www.diskusjon.no/index.php?showtopic=1299424 https://www.diskusjon.no/index.php?showtopic=1263992 https://www.diskusjon.no/index.php?showtopic=1274881&st=0&p=16472338&fromsearch=1entry16472338 Spørsmålet mitt er da; er det vanskelig og tidkrevende å lage en kode som automatisk henter ut informasjon fra forskjellige nettsider og presenterer dette i et sammendrag? Dette kan variere en del hvordan siden er bygd opp,fra enkelt til vanskelig. Kan teste en side,viss du poster en link og tekst som skal tas ut. Lenke til kommentar
snippsat Skrevet 6. mars 2011 Del Skrevet 6. mars 2011 Tar det i forumet da kansje andre lurer på det samme,eller kan lære noe. https://1saleaday.com/ (https://1saleaday.com/). Informasjon jeg gjerne skal ha ut er navn, bilde, pris og gjenværende tid av tilbudet. Litt av problemet var gjenværende tid,dette blir kjørt av et javascript. Jeg løste dette med og ta det ut javasciptet med firebug og lage en webside lokalt(xampp)som gjør det samme. Når jeg kjører python koden får jeg alt infoen du ønsker. Jeg har passet på at man kan ta ut infoen selv om man skifter url til produktet. Nå er dette mer en demo om hvordan dette kan gjøres i python,jeg har nok og gjøre og er vel ikke alt for interessert og drive dette videre. from BeautifulSoup import BeautifulSoup import urllib2 import webbrowser import re def open_url(url): '''Open url link for extract of info''' url = urllib2.urlopen(url) soup = BeautifulSoup(url) return soup def name(soup): '''Extract name of product''' h1_tag = soup.findAll('h1') return h1_tag[0].text def image(soup): '''Extract product image''' img_tag = soup.findAll('img', limit=2) img = str(img_tag[1]) image = re.search(r'src="(.+)"', img) #print image.group(1) return webbrowser.open(image.group(1)) #open image in browser def price(soup): '''Extract price of product''' price_tag = soup.findAll('p' , {'class': 'blue_price_highlight'}) price = ''.join(str(price_tag[0].text).split('\n')) return price def time_remaind(): '''This product deal ends in''' #javascript countdown that i simulate local return webbrowser.open('C:/xampplite/htdocs/site_tom/time_remaind.html') if __name__ == '__main__': #Test of 4 product links url = ['https://1saleaday.com/', 'https://1saleaday.com/wireless', 'https://1saleaday.com/watch', 'https://1saleaday.com/family' ][2] link = open_url(url) #Print out info print name(link) image(link) print price(link) time_remaind() Javasciptet jeg kjører lokalt. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Untitled Document</title> </head> <script language="JavaScript" type="text/javascript"> var month = '0'; // '*' for next month, '0' for this month or 1 through 12 for the month var day = '+1'; // Offset for day of month day or + day var hour = 0; // 0 through 23 for the hours of the day var tz = -5; // Offset for your timezone in hours from UTC var lab = 'tzcd'; // The id of the page entry where the timezone countdown is to show //******************************************************************************/// var rightNow = new Date(); var jan = new Date(rightNow.getFullYear(), 0, 1, rightNow.getHours(), rightNow.getMinutes(), rightNow.getSeconds(), rightNow.getMilliseconds()); var jul = new Date(rightNow.getFullYear(), 7, 1, rightNow.getHours(), rightNow.getMinutes(), rightNow.getSeconds(), rightNow.getMilliseconds()); if (rightNow.getTimezoneOffset() == jan.getTimezoneOffset()){ tz = -5; } else{ tz = -4;} // **** Time Zone Count Down Javascript **** // /* Visit http://rainbow.arch.scriptmania.com/scripts/ for this script and many more */ ////////// CONFIGURE THE COUNTDOWN SCRIPT HERE ////////////////// function start_counter() {displayTZCountDown(setTZCountDown(month,day,hour,tz),lab);} // ** The start function can be changed if required ** window.onload = start_counter; ////////// DO NOT EDIT PAST THIS LINE ////////////////// function setTZCountDown(month,day,hour,tz) { var toDate = new Date(); if (month == '*')toDate.setMonth(toDate.getMonth() + 1); else if (month > 0) { if (month <= toDate.getMonth())toDate.setYear(toDate.getYear() + 1); toDate.setMonth(month-1); } if (day.substr(0,1) == '+') {var day1 = parseInt(day.substr(1)); toDate.setDate(toDate.getDate()+day1); } else{toDate.setDate(day); } toDate.setHours(hour); toDate.setMinutes(0-(tz*60)); toDate.setSeconds(0); var fromDate = new Date(); fromDate.setMinutes(fromDate.getMinutes() + fromDate.getTimezoneOffset()); var diffDate = new Date(0); diffDate.setMilliseconds(toDate - fromDate); var expires_sec = Math.floor(diffDate.valueOf()/1000) if(expires_sec<0) { expires_sec = 86400+ expires_sec } return expires_sec; } function displayTZCountDown(countdown,tzcd) { if (countdown < 0) document.getElementById(tzcd).innerHTML = ""; else {var secs = countdown % 60; if (secs < 10) secs = '0'+secs; var countdown1 = (countdown - secs) / 60; var mins = countdown1 % 60; if (mins < 10) mins = '0'+mins; countdown1 = (countdown1 - mins) / 60; var hours = countdown1 % 24; var days = (countdown1 - hours) / 24; document.getElementById(tzcd).innerHTML = hours+ ':' +mins+ ':'+secs+''; setTimeout('displayTZCountDown('+(countdown-1)+',\''+tzcd+'\');',999); } } </script> <body> <p class='countdown_stopwatch' id='tzcd'></p> </body> </html> Lenke til kommentar
emilkje Skrevet 6. mars 2011 Del Skrevet 6. mars 2011 Den kan også være verdt å kikke på Yahoo Query Language (YQL), der du enkelt kan "scrape" informasjon fra nettsider og presentere dataen i form av json/xml. HINT: Gå til yql konsollen og bla deg til kategorien data -> html for et eksempel på hvordan dette kan gjøres. Lenke til kommentar
And.rs Skrevet 7. mars 2011 Forfatter Del Skrevet 7. mars 2011 Takk for gode tips! 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å