Amazon izdelki - scrape podatkov s PHP
 
inkanet 29. jun 2011 07:22:38 Pridružen od:
3. okt 2008
328 objav
110 1 2
#1

Kako bi iz Amazon strani za določen izdelek izluščil podatke o:



Povprečni oceni (x stars out of 5)

Številu ocenjevalcev (customer reviews)



Sam sem uporabil tole kodo:


<?php
$source=file_get_contents("http://www.amazon.com/dp/B002FQJT3Q/");
preg_match("/title=\"(.*?) out of 5 stars/",$source, $result);
$par1=$result[1];
echo '<u>Rating on Amazon.com: '.$par1.' out of 5 stars</u><br>';
?>

Stvar je delovala 1 dan, sedaj pa se izpiše napaka:



Warning: filegetcontents(http://www.amazon.com/dp/B002FQJT3Q/) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable



Blokada s strani Amazona?


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 29. jun 2011 08:05:04 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#2

Kako pogosto pa si posodabljal ta 1 dan ko ti je še delalo?


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
jazzfunk 29. jun 2011 09:39:25 Pridružen od:
5. apr 2010
1365 objav
1665 195 26
#3

Probaj najprej ponovno iz drugega IP naslova. Če bo delalo potem je bilo to zaradi blokade, kar je tudi najverjetnejši razlog, da ne deluje.


všeč(0) ni všeč(0) spam(0)
 
OvcaX 29. jun 2011 09:43:42 Pridružen od:
24. avg 2007
2753 objav
4575 1194 281
#4

Pa naredi eno cachiranje.

Ne moreš kar vedno, ko pride obiskovalec parsat sajta


všeč(0) ni všeč(0) spam(0)
CEO@Humanfrog & CEO@Junai
 
mtance 29. jun 2011 10:54:03 Pridružen od:
27. jan 2008
508 objav
198 16 1
#5

OvcaX:

Pa naredi eno cachiranje.

Ne moreš kar vedno, ko pride obiskovalec parsat sajta




Ali jih shranjuj v bazo in z nekim cronjobom osvežuj na X časa, če hočeš ažurirane podatke.


všeč(0) ni všeč(0) spam(0)
 
inkanet 29. jun 2011 10:58:29 Pridružen od:
3. okt 2008
328 objav
110 1 2
#6

@SlimDelux Probal sem ene 10 - 20 krat. Ko sem pisal kodo sem pač preverjal če in kako deluje izpis.



@OvcaX saj ideja je da bi skripta shranila vrednosti v MySql bazo in se osveževala samo 1 x dnevno. Samo zdaj mi pač ne deluje več.



@mtance ja to je v bistvu tudi moja ideja.



Skripto - Joomla PHP modul sem testiral na eni od mojih strani. Po mojem je IP ki ga zazna Amazon enak IP-ju kjer stran gostuje. Bom poizkusil še z druge strani ki je pri drugem ponudniku gostovanja. Če skripto zaženem na lokalnem pcju z XAMP-om mi namreč javi isto napako.


všeč(0) ni všeč(0) spam(0)
 
inkanet 29. jun 2011 11:22:26 Pridružen od:
3. okt 2008
328 objav
110 1 2
#7

@jazzfunk Isto napako mi javi tudi če zaženem skripto s strani ki je pri drugem ponudniku gostovanja.


všeč(0) ni všeč(0) spam(0)
 
mtance 29. jun 2011 11:29:43 Pridružen od:
27. jan 2008
508 objav
198 16 1
#8

Najbrž je napaka v nastavitvah PHP-ja. Probi dobit podatke s PHP cURL.



Primer CURL


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 29. jun 2011 11:39:14 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#9

Probaj


$s = @fsockopen('www.amazon.com',80, $errno, $errstr);
if(!$s)
{
echo "napaka: $errno : $errstr";
}
else
{
echo "ok";
fclose($s);
}

da vidiš, če je site sploh dosegljiv.


všeč(2) ni všeč(0) spam(0)
Freelance Web Developer
 
mtance 29. jun 2011 11:53:23 Pridružen od:
27. jan 2008
508 objav
198 16 1
#10

Tvoj primer, realiziran s cURL-om.



<?php

//$source=filegetcontents("http://www.amazon.com/dp/B002FQJT3Q/", true);



if (functionexists('curlinit')) {

// initialize a new curl resource

$ch = curlinit();

curl
setopt($ch, CURLOPTURL, 'http://www.amazon.com/dp/B002FQJT3Q/');

curl
setopt($ch, CURLOPTHEADER, 0);

curl
setopt($ch, CURLOPTRETURNTRANSFER, 1);

curl
setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0');



$source = curl_exec($ch);



curl_close($ch);

} else {

echo "Error, you don't have support for cURL";

}



preg_match("/title=\"(.*?) out of 5 stars/",$source, $result);

$par1=$result[1];

echo '<u>Rating on Amazon.com: '.$par1.' out of 5 stars</u><br>';

?>


všeč(5) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se