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

@ SlimDelux

Če uporabim: www.amazon.com dobim: ok

Če pa uporabim http://www.amazon.com/dp/B002FQJT3Q mi vrne:



napaka: 0 : phpnetworkgetaddresses: getaddrinfo failed: Name or service not known



@mtance s cURL kot si ga napisal DELA !



V čem je štos?


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

Probaj iz mtancejevega primera odstraniti useragent, me prav zanima če je to to :)


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
inkanet 29. jun 2011 12:42:15 Pridružen od:
3. okt 2008
328 objav
110 1 2
#13

Tudi brez useragent je v redu.


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

Razlog sem napisal v enem post prej.



Torej, najbrž je problem v konfiguraciji PHP-ja in imaš izklopljeno funkcijo filegetcontents, mislim, da je to v "paketu" z fopen - ne me držat za besedo.


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

Hvala obema za pomoč.


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

Vseeno čudno, da mu je kar naenkrat nehalo delati :)


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

@mtance Sem še malo poizkušal in po mojem mora biti nekaj v zvezi z Amazonom. Ker če poizkusim enako skripto (z drugim regexom) na moji strani, potem dela.


všeč(0) ni všeč(0) spam(0)
 
mtance 30. jun 2011 10:31:19 Pridružen od:
27. jan 2008
508 objav
198 16 1
#18

Jaz sem dal njegovo kodo na moj strežnik in mi isto pokaže error. Je pa itak malo morje možnosti, kaj je :)


všeč(0) ni všeč(0) spam(0)
 
inkanet 27. jul 2011 12:14:24 Pridružen od:
3. okt 2008
328 objav
110 1 2
#19

Končno sem spacal skupaj skripto, pri čemer mi je bil v veliko pomoč namig od @mtance. Skripta iz MySql tabele prebere Amazon ASIN kode, z Amazon strain podatke o ceni, ocenah in številu ocen ter dobljene podatke zapiše v isto tabelo. Prilagam kodo:


<?php

$con = mysql_connect("localhost:3306","user","pass");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}

mysql_select_db("db", $con);

$query="SELECT asin from amazon where asin<>''";
$result2 = mysql_query($query);

while($row = mysql_fetch_array($result2))
{

$asin=$row['asin'];

if (function_exists('curl_init')) {
// initialize a new curl resource
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.amazon.com/dp/'.$asin);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 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);
$stars=$result[1];

preg_match("/priceLarge\">(.*?)</",$source, $result);
$price=trim($result[1],"$");
$price=trim($result[1],"$");

preg_match("/1\" \>See all (.*?) customer reviews/",$source, $result);
$reviews=$result[1];

echo 'ASIN: '.$asin.'<br>';
echo 'Rating on Amazon.com: '.$stars.' out of 5 stars<br>';
echo 'Price: '.$price.'<br>';
echo 'Customer reviews: '.$reviews.'<br><br>';

$query="UPDATE amazon set stars=".$stars.",price2='".$price."',
reviews='See all "
.$reviews." reviews' where asin='".$asin."'";

mysql_query($query);
}
$query="UPDATE amazon set price=price2 where asin<>'' and price2 > 0";
mysql_query($query);

mysql_close($con);

?>

Vem da je to PHP skropucalo ampak moj materni jezik je SQL. PHP skripta tako deluje le za izdelke ki imajo točno določeno ceno, ne dela pa za izdelke kot so na primer tile:



Več modelov različnih barv...

http://www.amazon.com/dp/B0047DVWLW



Variabilna cena (Price from)

http://www.amazon.com/dp/B004NNVHUC



Cena vidna le v košarici (See price in cart)

http://www.amazon.com/dp/B00422TXZA



Bi znal kdo pomagat, lahko tudi proti plačilu.


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

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se