Hoe werkt het 'uitlezen' van een vergelijkingssite?
Ik hoop dat ik op dit onderdeel goed zit betreffende mijn vraag.
Veel product-vergelijkingssites (een leuk voorbeeld is vliegtickets.nl) werken veelal middels het uitlezen van bijv. een xml of rss feed.
Echter, hoe zit dit met sites die een dergelijke feed niet aanbieden? Ik zou namelijk graag een webshop willen uitlezen waarbij door een formulier in te vullen gezocht word naar passende product(en). De prijs en beschikbaarheid van de producten veranderd per minuut dus het is belangrijk dat het realtime gebeurt.
Ik hoop dat jullie begrijpen wat ik bedoel en mij kunnen vertellen wat voor een techniek hiervoor gebruikt kan worden.
Alvast bedankt.
En wat wil je met die gegevens doen. Klinkt een beetje illegaal namelijk.
cURL gebruik ik om websites uit te lezen, maar wanneer er een xml aangeboden wordt maakt dit het veel makkelijker.
@roy d: uiteraard is dit veel makkelijker ja. Maar dit word niet aangeboden.
Ben je bekend met een site met tutorials o.i.d. ? Is het bovenstaande hiermee mogelijk?
Neem:
Daisycon
TradeTracker
m4n
etc..
Wordt wat spelen met de broncode om de juiste informatie te krijgen. Begin met de broncode uitlezen met file_get_contents (met curl ook mogelijk wanneer het wat meer afgeschermd is). Echo dit en ga met bijv. str_replace de rommel weghalen wat je niet wilt hebben. Of ga op regels werken, zoek naar bepaalde teksten in de broncode, enz..
Zorg wel dat je toestemming heb van..! Informatie is dan wel te lezen op het internet, maar betekend vaak niet dat dit gekopieerd, gewijzigd of opgeslagen mag worden!
2 voorbeeldjes om informatie te bemachtigen, kan helaas de website waar dit uitgelezen wordt er niet bij vertellen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<?php
//Omschrijving
function product_omschrijving ($id){
$regels = file("http://website.nl/info/".$id."/info.html");
$i = 0;
foreach($regels as $regel){
//Zoeken naar laatste stukje html na de omschrijving
if($start){
if(eregi('<div align="right" class="normal small">', $regels[$i])){
break;
} else {
$tekst .= $regels[$i];
}
}
//Zoeken naar de tr na de bestel button
if($gevonden){
if(eregi('</tr>', $regels[$i])){
$start = 1;
}
}
//Zoeken naar de bestel button
if(eregi('<input type="text" class="orderbox" value="1"', $regels[$i])){
$gevonden = 1;
}
$i++;
}
//Als er een omschrijving is wat rommel opruimen
if($tekst){
$tekst = str_replace(' class="normal"', "", $tekst);
$tekst = str_replace(' class=normal', "", $tekst);
$tekst = str_replace('<b>Productvergelijking</b>', "", $tekst);
$tekst = str_replace('<a href="/compare?artnr='.$id.'" title="Productvergelijking">Product toevoegen aan vergelijking</a>', "", $tekst);
$tekst = str_replace('/img/layout/globe.gif', "img/icons/world_link.png", $tekst);
$tekst = str_replace('(link naar externe website, opent in nieuw venster)', "(link naar fabrikant)", $tekst);
$tekst = str_replace('/ext.php?link=', "", $tekst);
$tekst1 = '<table width="100%" cellpadding="2" cellspacing="1" border=0>'.$tekst;
}
return rawurldecode($tekst1);
}
?>
//Omschrijving
function product_omschrijving ($id){
$regels = file("http://website.nl/info/".$id."/info.html");
$i = 0;
foreach($regels as $regel){
//Zoeken naar laatste stukje html na de omschrijving
if($start){
if(eregi('<div align="right" class="normal small">', $regels[$i])){
break;
} else {
$tekst .= $regels[$i];
}
}
//Zoeken naar de tr na de bestel button
if($gevonden){
if(eregi('</tr>', $regels[$i])){
$start = 1;
}
}
//Zoeken naar de bestel button
if(eregi('<input type="text" class="orderbox" value="1"', $regels[$i])){
$gevonden = 1;
}
$i++;
}
//Als er een omschrijving is wat rommel opruimen
if($tekst){
$tekst = str_replace(' class="normal"', "", $tekst);
$tekst = str_replace(' class=normal', "", $tekst);
$tekst = str_replace('<b>Productvergelijking</b>', "", $tekst);
$tekst = str_replace('<a href="/compare?artnr='.$id.'" title="Productvergelijking">Product toevoegen aan vergelijking</a>', "", $tekst);
$tekst = str_replace('/img/layout/globe.gif', "img/icons/world_link.png", $tekst);
$tekst = str_replace('(link naar externe website, opent in nieuw venster)', "(link naar fabrikant)", $tekst);
$tekst = str_replace('/ext.php?link=', "", $tekst);
$tekst1 = '<table width="100%" cellpadding="2" cellspacing="1" border=0>'.$tekst;
}
return rawurldecode($tekst1);
}
?>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
//Afbeelding downloaden en opslaan
function product_afbeelding ($id){
$imghost = "/home/website/domains/website.nl/public_html/img/product/";
include_once("inc/simple_html_dom.php");
$html = file_get_html("http://website.nl/info/".$id."/info.html");
$a = 1;
foreach($html->find('a') as $img){
if(strstr($img->href, "jpg")){
$url = 'http://www.website.nl'.$img->href;
$img = $imghost.'1-'.$id.'-'.$a.'.jpg';
$error_handling = file_put_contents($img, file_get_contents($url));
if(!$error_handling){
$fouten .= "<br><br>--<br>".mysql_error();
$a++;
}
$string .= "1-".$id.'-'.$a.'.jpg,';
$a++;
}
}
return $string;
}
?>
//Afbeelding downloaden en opslaan
function product_afbeelding ($id){
$imghost = "/home/website/domains/website.nl/public_html/img/product/";
include_once("inc/simple_html_dom.php");
$html = file_get_html("http://website.nl/info/".$id."/info.html");
$a = 1;
foreach($html->find('a') as $img){
if(strstr($img->href, "jpg")){
$url = 'http://www.website.nl'.$img->href;
$img = $imghost.'1-'.$id.'-'.$a.'.jpg';
$error_handling = file_put_contents($img, file_get_contents($url));
if(!$error_handling){
$fouten .= "<br><br>--<br>".mysql_error();
$a++;
}
$string .= "1-".$id.'-'.$a.'.jpg,';
$a++;
}
}
return $string;
}
?>
Hoop dat je er wat aan hebt..
Gewijzigd op 15/02/2011 22:44:47 door Roy -
Met 100% zekerheid kan ik zeggen dat deze niet bij een affiliate marketing bedrijf aangesloten zijn. Dus dat is geen optie. Als ik je reactie goed begrijp.
Daarom is XML nou juist zo tof. Die biedt het in één fatsoenlijk formaat aan, die nooit aangepast wordt.
Helemaal juist, helaas bood de leverancier zoiets niet aan en was er geen mogelijkheid dat dit ontwikkeld werd. Zodoende akkoord om het uit te lezen gekregen en kwamen dit soort scripts tevoorschijn.
In principe mag je geen data uit een website halen. Alleen met toestemming mag dat, maar dan wordt er vaak ook wel iets aangeboden. Of dat hier ook geldt weet ik niet zeker. Waarschijnlijk wel.
@Roy eregi is trouwens verouderd.