Gå til innhold

Hente ut tekstinformasjon fra nettsider


Anbefalte innlegg

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 av And.rs
Lenke til kommentar
Videoannonse
Annonse
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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...